Putty WinScp 免密登录远程 Linux [Openssh版]

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是没有区别的,把公钥信息拷贝到验证文件中即可使用。

Leave a Reply

Your email address will not be published. Required fields are marked *