ssh免密碼登入

2021-07-10 19:37:35 字數 957 閱讀 7739

為什麼要做ssh免密碼登入?在通過指令碼遠端部署軟體時,經常要多次遠端執行命令,免密碼登入有助於簡化指令碼**,同時提高登入效率。

免密碼登入的原理,簡而言之,就是將本地使用者的公鑰,複製到遠端主機指定檔案中(這一步需要密碼);之後的登入,遠端主機將通過金鑰來識別使用者,而不再需要密碼。

複製公鑰的方法有兩種,最簡單的就是執行ssh-copy-id命令:

ssh-copy-id remote_user@remote_host

第二種方法就是通過基本命令將公鑰寫到遠端主機的authorized_keys檔案中:

key=$(cat ~/.ssh/id_rsa.pub)

ssh remote_user@remote_host "

echo '$key' >> ~/.ssh/authorized_keys;

sort -u ~/.ssh/authorized_keys > ~/.ssh/authorized_keys_tmp;

/bin/mv ~/.ssh/authorized_keys_tmp ~/.ssh/authorized_keys;

"

上面的**還考慮到了重複寫入的問題。據我所知,ssh-copy-id命令多次重複執行會在authorized_keys檔案中產生重複的記錄,所以執行之前最好先檢測一下。

複製完公鑰,理想情況下事情已經結束,可以試試ssh登入有沒有免密碼的效果。如果沒有效果,那就是問題來了:

1、檢查遠端使用者的.ssh目錄許可權是不是755或者600,如果不是,就修改一下許可權:

chmod 755 ~/.ssh

2、嘗試關閉selinux,如果關了就可以登入,那估計要恢復一下selinux上下文 :

restorecon -rv ~/.ssh/

收工.

ssh 免密碼登入

ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh keygen t rs...

ssh 免密碼登入

ssh 免密碼登入 ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh k...

ssh免密碼登入

實現原理 主機a 產生公鑰和金鑰,將主機a的公鑰傳送到主機b 主機b 接收主機a傳送的公鑰 主機a ssh請求登入到主機b 主機b 傳送給主機a一串字元 主機a 收到主機b傳送的字元,使用金鑰進行加密,並傳送回到主機b 主機b 接收到主機a使用金鑰加密後的字元,使用主機a的公鑰執行一定演算法進行對比...