一、SSH证书登录步骤:
二、客户端创建私钥和公钥
1、在客户端运行命令
ssh-keygen -t rsa -f ~/.ssh/id_rsa_web1 -C "key for web1"
-b:指定密钥长度;
-C:添加注释;
-e:读取openssh的私钥或者公钥文件;
-f:指定用来保存密钥的文件名,不设置路径默认保存在用户~/.ssh/目录下;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-m 参数指定密钥的格式,PEM(也就是RSA格式)是之前使用的旧格式
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型, 证书登录常用的是的是rsa类型
2、运行命令会提示输入密码,如果测试不需要密码可以直接敲回车
3、最后生成两个文件,分别是 id_rsa_web1(私钥)和id_rsa_web1.pub(公钥) :
私钥
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA3miSzJOGnDHW8c/4RpmrLwlUFzQqYTeekzqdl8EiyEr+QVae
…中间内容忽略…
R3ts4WhP0MOwldynTdEfTDYqZW/Z8OjuXGpCblD2tcsXsygGgvQ7
-----END RSA PRIVATE KEY-----
公钥
ssh-rsa AAAAB3NzaC1yQD…省略…mZnKat8ibmDf key for web1
4、Windows可以下载GitBash工具运行命令行
https://git-scm.com/download/win
三、服务器SSH配置
1、使用root用户打开ssh配置文件,修改前养成备份的习惯。
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
vim /etc/ssh/sshd_config
配置修改如下:
#禁用root账户登录,非必要
PermitRootLogin no
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
StrictModes no
# 是否允许用户使用密钥登入系统,仅version 2。
RSAAuthentication yes
PubkeyAuthentication yes
# 公钥白名单数据保存位置
AuthorizedKeysFile %h/.ssh/authorized_keys
# 禁用密码登录
PasswordAuthentication no
2、将客户端秘钥上传至服务器
scp ~/.ssh/id_rsa_web1.pub [email protected]:~/.ssh/
test 目标服务器用户名,192.168. 是目标服务器地址,: 后面是保存路径。
如果从远程下载 将两个地址格式互换一下(window同理)
scp [email protected]:~/.ssh/id_rsa_web1.pub ~/.ssh/
3、将公钥写入白名单
cat ~/.ssh/id_rsa_web1.pub >> ~/.ssh/authorized_keys
cat 打印公钥内容
>> 将内容直接追加到authorized_keys文件末尾。也可以使用vim编辑直接将公钥内容粘贴到末尾。
authorized_keys内容如下:
ssh-rsa AAAAB3N+hFt…省略…8IiPybRJdPMsur/NeN3U8t test
ssh-rsa AAAAB3NzaC1yQD…省略…mZnKat8ibmDf key for web1
4、编辑好之后重启ssh服务
/etc/init.d/ssh restart
四、客户端SSH证书连接
1、使用ssh证书登录服务器
ssh -i ~/.ssh/id_rsa_web1.pub [email protected]
-i: 指定私钥路径
2、使用scp命令
scp -i ~/.ssh/id_rsa_web1.pub ~/1.txt [email protected]:~
3、 修改客户端ssh配置文件,设置默认的证书
#添加证书地址
IdentityFile ~/.ssh/id_rsa
五、不同服务器单独配置证书
1、配置host文件
vi /etc/hosts
(windows 目录 C:\Windows\System32\drivers\etc,需要右击用管理员权限运行记事本)
内容如下:
192.168.1.112 web1.com
192.168.1.113 web2.com
2、编辑ssh配置文件(windos在C:\Users\用户.ssh文件夹下)
vim /etc/ssh/sshd_config
(windos 在C:\Users\用户\.ssh文件夹下)
内容如下:
Host web1.com
IdentityFile ~/.ssh/id_rsa_web1
User test
Host web2.com
IdentityFile ~/.ssh/id_rsa_web2
User root
Host 为要登录的服务器
IdentityFile 为证书私钥地址
User 为登录的用户
重启服务后(window不用重启),登录服务器就不需要指定证书地址了
六、证书加密方式遇到的问题
1、在使用rsa加密方式生成私钥后,无法导入xshell工具中,或报错:Resource temporarily unavailable. Authentication by key (/Users/youname/.ssh/id_rsa) failed (Error -16). (Error #35)。
打开私钥文件对比发现,生成的私钥第一行变成了“BEGIN OPENSSH PRIVATE KEY” 而不是“BEGIN RSA PRIVATE KEY”,新版本ssh命令,使用rsa加密时,默认都是OPENSSH格式。
解决方式:
使用命令 ssh-keygen -m PEM -t rsa -b 4096
可生成旧版本格式。