openstack-nova密鑰對

使用雲主機時,出於安全性考慮,需要設置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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章