使用雲主機時,出於安全性考慮,需要設置ssh登錄。
ssh主要有兩種登錄方式:第一種爲密碼口令登錄,第二種爲公鑰登錄,登錄不需要輸入密碼。這裏主要分析密鑰登錄方式
(一)基礎
1) 公鑰:用於加密,存在於服務器2) 私鑰:用於解密,存在於客戶機
(二)流程
1)客戶端向服務器發出連接請求2)服務器查看客戶端公鑰(~/.ssh/authorized_keys)該客戶機(客戶機標誌:用戶@Host)對應的公鑰
3)服務器驗證公鑰合法,則產生一條隨機數(challenge),用公鑰加密發送給客戶端
4)客戶端用私鑰解密回傳服務器端。
5)隨機數一致,認證通過。
(三)操作
1,生成密鑰命令:
# ssh-keygen -t rsa
命令執行完,cd至.ssh文件夾就可以看到生成的公鑰(id_rsa.pub)文件,私鑰文件(id_rsa)
注:
私鑰都是以-----BEGIN RSA PRIVATE KEY-----開頭,以-----END RSA PRIVATE KEY-----結尾
2,上傳公鑰(id_rsa.pub)文件傳送到服務器端,可以用scp傳輸,也可以用ssh-copy-id工具來傳送(其實就是一個腳本)
2.1)在客戶端,用ssh-copy-id,將公鑰複製到遠程服務器端
# ssh-copy-id -i .ssh/id_rsa.pub 用戶名@192.168.x.xxx
注意:
ssh-copy-id 將key寫到遠程機器的 ~/.ssh/authorized_key文件中。
第一次ssh-copy-id需要密碼登錄。
2.2)也可以用scp的方式將公鑰複製到遠程服務器端若用scp,則公鑰文件傳輸到服務器端後,需要再在服務器端,用cat命令,把公鑰寫入服務器端的~/.ssh/authorized_keys文件中。
或者直接在客戶端執行幾個命令的集合:
# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"
3,在客戶端,指定私鑰,進行無密碼登錄服務器端。
#ssh -i ~/.ssh/id_rsa [email protected]
(四)常見錯誤
密鑰登錄報錯:
[root@host]# ip netns exec qdhcp-488d4132-fa9a-408f-b430-ff3967d550b8 ssh -i ~/.ssh/id_rsa [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:cv661XpC4DfQnM3royqAPcsb9xiNpI1HjDfOxPJNat8.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:38
RSA host key for 192.168.1.200 has changed and you have requested strict checking.
Host key verification failed.
處理方法:
[root@host]# vim /root/.ssh/known_hosts
刪掉/root/.ssh/known_hosts文件中,192.168.1.200對應的一行數據,再次登錄可成功。
原因:
一臺主機上有多個Linux系統,會經常切換,那麼這些系統使用同一ip,登錄過一次後就會把ssh信息記錄在本地的~/.ssh/known_hsots文件中,切換該系統後再用ssh訪問這臺主機就會出現衝突警告,需要手動刪除修改known_hsots裏面的內容。
參考:https://blog.csdn.net/liu_qingbo/article/details/78383892