SSH配置公钥私钥免密登录
- SSH的安全机制
- 一、修改远程主机ssh设置
- 二、在windows客户端生成公钥私钥文件
- 三、将客户端公钥追加到远程主机 .ssh/authorized_keys中
- 参考链接
SSH的安全机制
SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。
第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。
一、修改远程主机ssh设置
在windows客户端以root用户名密码登录远程linux云主机:
vim /etc/ssh/sshd_configRSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys #公钥认证文件
按esc键,:wq保存后,输入service ssh restart
重启ssh服务。
linux默认允许密码登录,即PasswordAuthentication yes
二、在windows客户端生成公钥私钥文件
ssh-keygen -t rsa
一路回车之后在$HOME/.ssh/下就可以看到两个文件id_rsa为私钥,id_rsa.pub为公钥
三、将客户端公钥追加到远程主机 .ssh/authorized_keys中
首先将公钥文件id_rsa.pub上传至远程linux主机。
cat .ssh/id_rsa.pub | ssh root@xxx.xxx.xxx.xx -p xxxxx 'cat >> .ssh/authorized_keys'
为谨慎起见,可先不关闭密码登录,要关闭密码登录即设置PasswordAuthentication no,修改后重启ssh服务。
使用远程工具MobaXterm测试:
选择私钥文件id_rsa,点击确定。
在用户会话中双击要登录的IP,成功登录:
使用xshell测试:
登录成功。
如果配置完成还是无法免密登录,检查权限,属组是否正确
.ssh目录的权限必须是700
.ssh/authorized_keys文件权限必须是600
也可在ssh-keygen -t rsa时设置密码,需要先设置linux默认允许密码登录,即PasswordAuthentication yes,调试成功后再关闭即可:
使用MobaXterm测试发现加载文件后可以登录,与之前无差别。
使用xshell时,点击用户密钥:
需输入正确的密码(ssh-keygen -t rsa时设置的密码)才能导入。
而当点击文件,再点击确定时显示无法加载用户密钥:
输入密码后正常。
还是ssh-keygen -t rsa时不设置密码方便!
参考链接
1.SSH登录流程及配置公钥登录
2.RSA密钥使用指南