ssh-copy-id指令可以將本地端的SSH公鑰傳給遠端的SSH伺服器,使其信任本地端,從而讓本地端連線到SSH伺服器的時候可以直接被授權,不需要再提供遠端Linux使用者的密碼。然而在某些情況下,即便使用了ssh-copy-id指令,SSH伺服器也總還是會要求使用者輸入密碼才可以連線,這是怎麼一回事呢?



如下圖,原先要使用密碼才可以登入的SSH伺服器,在成功使用ssh-copy-id指令後,依然還是需要密碼才可以登入SSH伺服器。

ssh-copy-id-not-working

在客戶端使用ssh-copy-id指令後,SSH伺服器會把客戶端的公鑰資訊儲存到~/.ssh/authorized_keys檔案。若要讓SSH伺服器信任儲存在~/.ssh/authorized_keys中的SSH客戶端,~/.ssh/authorized_keys檔案本身,以及其所有的上層目錄,對於others都必須不能有寫入權限,至於擁有者則必須為該Linux使用者。

ssh-copy-id-not-working

所以當您發現ssh-copy-id指令沒有作用的時候,請檢查SSH伺服器的~/.ssh/authorized_keys檔案和其所有的上層目錄的權限。~/.ssh/authorized_keys檔案的權限應設為600~/.ssh目錄的權限應設為700