ssh秘鑰登錄
剛開始的時候不知道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充當
在客戶端操作:
[root@m01 ~]# hostname #獲取當前主機的用戶名
m01
[root@m01 ~]# ifconfig eth2|awk -F "[ :]+" 'NR==2 {print $4}' #獲取當前網絡的IP地址
172.16.1.61
#生成一個類型為rsa的1024 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.
ssh秘鑰登錄