天天看點

雲主機ssh密鑰登入

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

ssh-keygen可以在用戶端執行,也可以在服務端執行。

不論在哪裡執行,最終目的都是把公鑰檔案注入Server端的authorized_key檔案中,私鑰儲存在本地。

2,上傳公鑰(id_rsa.pub)檔案,将其寫入到伺服器端對應的authorized_key檔案中

可以用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 [email protected] "cat - >> ~/.ssh/authorized_keys"

3,在用戶端,指定私鑰,進行無密碼登入伺服器端。

#ssh -i ~/.ssh/id_rsa [email protected]

(四)關閉密碼登陸

1,修改SSH的配置檔案/etc/ssh/sshd_config

PasswordAuthentication yes    #使用密碼登入

修改為:

PasswordAuthentication no  # 關閉密碼登入,使用密鑰登入

2、儲存後重新開機SSH服務。

# systemctl restart sshd

3、其它參數

#PubkeyAuthentication yes   # 此選項為key登入方式參數,預設是注釋掉的,并且是預設開啟的。

是以,禁用密碼登入後,若此參數不配置禁用,則預設使用密鑰登入。

sshd_config參數詳情參考:http://www.jinbuguo.com/openssh/sshd_config.html

(五)常見錯誤

密鑰登入報錯:

[[email protected]]# 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.

處理方法:

[[email protected]]# 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

繼續閱讀