Centos SSH免密碼登錄

最近更新時間 2020-01-16 13:56:36

SSH概述

SSH (全稱:Secure Shell)是加密的網絡傳輸協議,常用於遠程登錄服務器,執行命令。Windows下可以用SSH客户端進行遠程連接。

SSH基於密碼的安全驗證,無法避免“中間人”攻擊;而基於密鑰(免密碼)的安全驗證能避免被攻擊,方便服務器之間腳本進行訪問、執行任務腳本或者傳輸文件而無需輸入密碼。

現在,假設有A、B兩台Linux服務器,需要在A服務器免密碼登錄B服務器,可以進行如下操作。後面還會介紹A、B相互免密碼訪問的操作。

密鑰配置

1.在主機A中生成密鑰

登錄主機A,輸入ssh-keygen命令,如下所示:

#ssh-keygen
ssh-keygen -t rsa

連續三次默認回車,結果如下圖所示:

15609300538277.jpg

默認會在 ~/.ssh 目錄下生成 id_rsa 和 id_rsa.pub 文件。id_rsa 是私鑰文件,id_rsa.pub 是公鑰文件。此處密鑰文件位置和名稱可以在上圖中自己定義。

2.複製公鑰到主機B

需要把主機A中生成的公鑰id_rsa.pub添加到主機B中,輸入以下命令:

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

輸入主機B的密碼,執行結果如下圖所示:

複製公鑰ssh-copy-id

注意

如果ssh不能登錄主機B則不能使用 ssh-copy-id命令。可以把主機A的公鑰 id_rsa.pub 裏面的內容手動添加到主機B的 authorized_keys 文件中。authorized_keys 文件一般位於主機B中的.ssh目錄中,文件權限為 600

3.主機A免密碼登錄主機B

完成前面兩步,主機A就可以免密碼登錄主機B,命令如下:

#ssh
#或者 -i 指定私鑰文件位置
ssh -i ~/.ssh/id_rsa [email protected]

擴展思路

以上步驟能實現主機A免密碼訪問主機B,如果需要主機B也能免密碼訪問主機A,按以上步驟在主機B執行即可。

如果需要主機C、主機D等都能免密碼登錄主機B,可以按以上流程每台機器都生成私鑰,或者直接複製主機A的私鑰到其他服務器的 .ssh 目錄下,就可實現多服務器免密碼訪問主機B。

如果需要主機A免密碼訪問主機C、主機D等等,執行第2步到對應的機器或者在對應機器的 authorized_keys 文件中添加主機A的公鑰 id_rsa.pub,就可實現主機A免密碼訪問多服務器。

可能遇到的問題

出現 Permissions 0644 

可能是文件權限問題,設置私鑰文件權限為 600即可。chmod 600 ~/.ssh/id_rsa

參考資源:

  1. https://www.ssh.com/ssh/
rss_feed