Putty WinScp 免密登录远程 Linux [Openssh版]
1 2 | https://zhuanlan.zhihu.com/p/74456994 https://blog.csdn.net/shiqidide/article/details/8110958/ |
1-1. 登录机器
1-2. 生成公钥文件和私钥文件 id_rsa,id_rsa.pub
1 | ssh-keygen -t rsa |
以下是生成公钥/私钥过程: //一路回车就可以
1 2 3 4 5 6 7 8 9 | # ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <-密钥路径 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: 17:28:4c:c3:e4:18:d4:c2:31:bd:be:a7:a9:d4:a8:48 root@linuxfly.org |
1 2 | cd /root/.ssh/ //看到known_hosts,这个保证了机子登陆信息 ls |
1 2 | cat /root/.ssh/id_rsa //可以看到密钥 cat /root/.ssh/id_rsa.pub //可以看到公钥 |
1-3. 把公钥信息写入authorized_keys文件中
1 2 | cd /root/.ssh/ cat id_rsa.pub >> /root/.ssh/authorized_keys |
1-4. 修改目录(700)和文件(600)的权限
1 2 | chmod 700 /root/.ssh //权限改回来,否则会报错 chmod 600 /root/.ssh/authorized_keys //权限改回来,否则会报错 |
2-1. 生成putty的私钥
由于SSH的标准中,并没有固定密钥文件的格式。而Putty使用的私钥格式和OpenSSH生成的有点不同,需要转换一下。
a)把id_rsa传到Windows机器上
b)使用puttygen的“Load”读取id_rsa文件
这里也可以从图中的公钥信息,与id_rsa.pub对比一下,应该是一致的。
c)点击“Save private key”保留私钥。
d)putty使用该新的私钥登陆服务器即可。
winscp也可以免密进入了
3. 注意事项:
3-1. 检查OpenSSH服务端的配置
OpenSSH的配置通常保存在:/etc/ssh/sshd_config
1 | vi /etc/ssh/sshd_config |
1 2 3 4 5 6 | PermitRootLogin no //# 禁止root用户登陆 //***这步没改**** StrictModes yes //# 检查密钥的用户和权限是否正确,默认打开的 RSAAuthentication yes //# 启用 RSA 认证 AuthorizedKeysFile .ssh/authorized_keys //# 验证公钥的存放路径 PubkeyAuthentication yes //# 启用公钥认证 PasswordAuthentication no //# 禁止密码认证,默认是打开的 //****这步我没改**** |
1 | systemctl restart sshd |
说明:
a)如果StrictModes为yes,而authorized_keys的权限为664等的情况,则验证密钥的时候,会报错:
引用
bad ownership or modes for file /home/linuxing/.ssh/authorized_keys
b)若PasswordAuthentication设置为no,则禁用密码认证,配合启动公钥认证,是更安全的方式。
4. 公钥存放的路径
Putty作为客户端是不需要使用公钥的,而Linux服务端的公钥是存放在:~/.ssh/authorized_keys中。
也就是讲,如果登陆用户的主目录不同,存放的路径是不相同的。
例如某用户:
引用
$ echo ~
/home/linuxing
则密钥在:
/home/linuxing/.ssh/authorized_keys
若你想使用同一私钥,但不同用户登陆服务器,则请保证公钥信息已经写入每个用户的验证文件中咯。并且一定要注意验证文件的用户和权限不能搞错哦
5. 使用DSA密钥
默认配置下,OpenSSH就同时支持RSA和DSA两种编码的密钥。只要在生成密钥的时候选择“DSA”即可。例如:
# ssh-keygen -t dsa
使用上和RSA是没有区别的,把公钥信息拷贝到验证文件中即可使用。