ssh秘钥登录

自己在网上找ssh秘钥登录的教程,发现写的都不符合我迷糊的那一点:然后自己查man帮助。

刚开始的时候不知道Linux如何充当SSH client,然后自己已解决,解决见下

本地生成密钥(public key private key)。其中,public key存放在欲登录的服务器上,而privatekey为特定的客户机所持有。

当客户机向服务器发出建立安全连接的请求时,首先发送自己的public key,如果这个public key是被服务器所允许的,服务器就发送一个经过public key加密的随机数据给客户机,这个数据只能通过private key解密,客户机将解密后的信息发还给服务器,服务器验证正确后即确认客户机是可信任的,从而建立起一条安全的信息通道。

通过这种方式,客户机不需要向外发送自己的身份标志“private key”即可达到校验的目的,并且private key是不能通过public key反向推断出来的。这避免了网络窃听可能造成的密码泄露。客户机需要小心的保存自己的private key,以免被其他人窃取。(这就是为什么先在本地生成密钥,而不是在登录你的vps以后生成然后把私钥下载到本地,任何时刻都要保证私钥处在一个安全的地方)


使用想远程连接SSH服务器哪个用户,在客户端上就必须用哪个用户生成秘钥对,公钥必须放在服务器上对应用户的家目录下面

m01:172.16.1.61充当ssh client

backup172.16.1.41充当ssh server

在客户端操作:

[root@m01 ~]# hostname   #获取当前主机的用户名

m01

[root@m01 ~]# ifconfig eth2|awk -F "[ :]+" 'NR==2 {print $4}'   #获取当前网络的IP地址

172.16.1.61

#生成一个类型为rsa1024 bits的秘钥,-f指定生成的秘钥文件存放的位置

[root@m01 ~]# ssh-keygen -t rsa -b 1024 -f /root/.ssh/id_backup   (批量管理的时候可以通过这个名字来确定是那台服务器的秘钥)

Generating public/private rsa key pair.

下次使用秘钥需要输入的密码,批量管理的时候这个一般都不设

Enter passphrase (empty for no passphrase):  

#重复上面那个密码

Enter same passphrase again:

#私钥存放的位置。

Your identification has been saved in /root/.ssh/id_backup.

#公钥存放的位置

Your public key has been saved in /root/.ssh/id_backup.pub.

The key fingerprint is:

63:ec:7a:14:4e:f8:db:80:f9:7b:cc:c6:40:6e:f2:69 root@m01

The key's randomart image is:

+--[ RSA 1024]----+

|                 |

|                 |

|       .         |

|      ..+        |

|       OS.       |

|      +oO.       |

|       *.X       |

|       .E B      |

|      .o.+       |

+-----------------+

[root@m01 ~]# ls /root/.ssh/    #查看刚才秘钥有没有生成成功

id_backup  id_backup.pub  known_hosts

#把公钥上传到ssh 服务端。

[root@m01 ~]# scp /root/.ssh/id_backup.pub [email protected]:/root/

[email protected]'s password:    #输入远程服务器的root密码

id_backup.pub                          100%  218     0.2KB/s   00:00  

 

在服务端:

[root@backup ~]# hostname

backup

[root@backup ~]# ifconfig eth2 | awk -F "[ :]+" 'NR==2 {print $4}'

172.16.1.41

[root@backup ~]# ls

id_backup.pub 

[root@backup ~]# ls /root/

id_backup.pub

[root@backup ~]# mkdir /root/.ssh

[root@backup ~]# chmod 700 /root/.ssh/   #这个dir的权限必须为700

[root@backup ~]# touch /root/.ssh/authorized_keys

#公钥存放这个文件里,由配置文件AuthorizedKeysFile 这个选项控制的

[root@backup ~]# chmod 600 /root/.ssh/authorized_keys  #权限必须为600

[root@backup ~]# cat id_backup.pub >>/root/.ssh/authorized_keys  #把刚才上传文件追加到这个文件里面,这个是用于用户身份验证的公钥的文件。

 

/etc/ssh/sshd_config配置文件里面这两个选项必须打开

RSAAuthentication yes

PubkeyAuthentication yes

 

客户端操作完成之后在客户端上使用秘钥登录:

#-i指定私钥存在的位置

[root@m01 ~]# ssh -i /root/.ssh/id_backup [email protected]

Last login: Sat May 19 19:21:08 2018 from 10.0.0.1

[root@backup ~]# hostname

backup

[root@backup ~]# exit

logout

Connection to 172.16.1.41 closed.


猜你喜欢

转载自blog.51cto.com/13447608/2120225