ssh秘钥登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
backup:172.16.1.41充当ssh server
在客户端操作:
[[email protected] ~]# hostname #获取当前主机的用户名
m01
[[email protected] ~]# ifconfig eth2|awk -F "[ :]+" 'NR==2 {print $4}' #获取当前网络的IP地址
172.16.1.61
#生成一个类型为rsa的1024 bits的秘钥,-f指定生成的秘钥文件存放的位置
[[email protected] ~]# 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 [email protected]
The key's randomart image is:
+--[ RSA 1024]----+
| |
| |
| . |
| ..+ |
| OS. |
| +oO. |
| *.X |
| .E B |
| .o.+ |
+-----------------+
[[email protected] ~]# ls /root/.ssh/ #查看刚才秘钥有没有生成成功
id_backup id_backup.pub known_hosts
#把公钥上传到ssh 服务端。
[[email protected] ~]# scp /root/.ssh/id_backup.pub [email protected]:/root/
[email protected]'s password: #输入远程服务器的root密码
id_backup.pub 100% 218 0.2KB/s 00:00
在服务端:
[[email protected] ~]# hostname
backup
[[email protected] ~]# ifconfig eth2 | awk -F "[ :]+" 'NR==2 {print $4}'
172.16.1.41
[[email protected] ~]# ls
id_backup.pub
[[email protected] ~]# ls /root/
id_backup.pub
[[email protected] ~]# mkdir /root/.ssh
[[email protected] ~]# chmod 700 /root/.ssh/ #这个dir的权限必须为700
[[email protected] ~]# touch /root/.ssh/authorized_keys
#公钥存放这个文件里,由配置文件AuthorizedKeysFile 这个选项控制的
[[email protected] ~]# chmod 600 /root/.ssh/authorized_keys #权限必须为600
[[email protected] ~]# cat id_backup.pub >>/root/.ssh/authorized_keys #把刚才上传文件追加到这个文件里面,这个是用于用户身份验证的公钥的文件。
/etc/ssh/sshd_config配置文件里面这两个选项必须打开
RSAAuthentication yes
PubkeyAuthentication yes
客户端操作完成之后在客户端上使用秘钥登录:
#-i指定私钥存在的位置
[[email protected] ~]# ssh -i /root/.ssh/id_backup [email protected]
Last login: Sat May 19 19:21:08 2018 from 10.0.0.1
[[email protected] ~]# hostname
backup
[[email protected] ~]# exit
logout
Connection to 172.16.1.41 closed.
以上是关于ssh秘钥登录的主要内容,如果未能解决你的问题,请参考以下文章