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 目錄下生成 id_rsa 和 id_rsa.pub 文件。id_rsa 是私鑰文件,id_rsa.pub 是公鑰文件。此處密鑰文件位置和名稱可以在上圖中自己定義。
2.複製公鑰到主機B
需要把主機A中生成的公鑰id_rsa.pub
添加到主機B中,輸入以下命令:
輸入主機B的密碼,執行結果如下圖所示:
如果ssh不能登錄主機B則不能使用 ssh-copy-id
命令。可以把主機A的公鑰 id_rsa.pub 裡面的內容手動添加到主機B的 authorized_keys 文件中。authorized_keys 文件一般位於主機B中的.ssh目錄中,文件權限為 600。
3.主機A免密碼登錄主機B
完成前面兩步,主機A就可以免密碼登錄主機B,命令如下:
擴展思路
以上步驟能實現主機A免密碼訪問主機B,如果需要主機B也能免密碼訪問主機A,按以上步驟在主機B執行即可。
如果需要主機C、主機D等都能免密碼登錄主機B,可以按以上流程每臺機器都生成私鑰,或者直接複製主機A的私鑰到其他服務器的 .ssh 目錄下,就可實現多服務器免密碼訪問主機B。
如果需要主機A免密碼訪問主機C、主機D等等,執行第2步到對應的機器或者在對應機器的 authorized_keys 文件中添加主機A的公鑰 id_rsa.pub,就可實現主機A免密碼訪問多服務器。
可能遇到的問題
可能是文件權限問題,設置私鑰文件權限為 600即可。chmod 600 ~/.ssh/id_rsa