总体思路:
在任意一台电脑生成RSA 密钥对,将公钥(.pub) 写入到服务器“/root/.ssh/authorized_keys”目录中,修改服务器“/etc/ssh/sshd_config ” 配置文件,然后用户使用私钥远程登录。
实际操作:
1 生成RSA 密钥对
在CentOS服务器上执行如下命令。
ssh-keygen -t rsa -C "273062991@qq.com"
# 如指定生成位置
ssh-keygen -t rsa -C "273062991@qq.com" -f ./my_rsa
执行后,会提示默认保存为/root/.ssh/id_rsa,直接回车即可。然后提示输入两次密钥的密码,如果不设置密码直接两次回车即可,注意如果输入密码此时键盘输入是不显示的,直接输入即可。最后见到以下显示,代表RSA 密钥对生成成功。
[root@centos-linux ~]# ssh-keygen -t rsa -C "273062991@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QIjKan6I1bIq7ilG79I2BQuawg/U7Ge01/x3kMEVVEA 273062991@qq.com
The key's randomart image is:
+---[RSA 2048]----+
| . .. .E++|
| . .. . |
|..o . . . |
|.+ + . . o |
|=.o.+ . S o |
|==oo.= . o o |
|*.*o+ . . . |
|+=oB . . . |
|B==.. . . |
+----[SHA256]-----+
[root@centos-linux ~]#
查看刚刚生成的/root/.ssh/目录,可看到生成了id_rsa和id_rsa.pub两个文件,即密钥对。id_rsa.pub为公钥,id_rsa为私角。
[root@centos-linux .ssh]# ls /root/.ssh/
id_rsa id_rsa.pub
2 导入密钥
在CentOS服务器中导入以上的公钥到/root/.ssh/authorized_keys文件中。将id_rsa.pub内容写入到该文件即可。
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
如果需要添加多个公角,则在该文件中多行写入,每行代表一个公钥。
说明:为什么要将密钥文件写入到authorized_keys文件呢,因为ssh服务的默认配置里面写明了文件位置和文件名。可查看sshd_config,找到AuthorizedKeysFile .ssh/authorized_keys一行。
cat /etc/ssh/sshd_config
3 ssh服务配置
编辑配置文件
vim /etc/ssh/sshd_config
#开启RSA验证
RSAAuthentication yes
#使用公钥验证
PubkeyAuthentication yes
重启ssh服务
systemctl restart sshd
接下来即可使用ssh密钥登录
4 私钥登录
远程用户使用私钥id_rsa,可通过命令或ssh工具进行免密登录。
5 安全配置
在确保以上配置无误,远程用户可通过密钥进行免密登录后。可以通过下面的配置属性修改登录端口和禁用密码登录,提高服务器安全性
编辑配置文件
vim /etc/ssh/sshd_config
#修改登录端口
Port 22
#禁用密码登录
PasswordAuthentication no
修改配置后,仍需要重启ssh服务
systemctl restart sshd
6 客户端密钥导入失败的处理
如在Windows中使用xshell导入私钥时,会提示:“用户秘钥导入失败 无法加载用户密钥”,一般是需要将密钥的OPENSSH格式转为RSA格式。转换方法如下。
在CentOS服务器或其它CentOS服务器(需要有id_rsa文件)执行如下命令。
yum install -y putty
puttygen id_rsa -o id_rsa.ppk
puttygen id_rsa.ppk -O private-openssh -o id_rsa.pem
生成的id_rsa.pem文件即为转换后的RSA秘钥,Xshell就能正常识别导入。