ssh金鑰登入失敗(轉)
阿新 • • 發佈:2021-09-01
https://www.chenyudong.com/archives/ssh-public-key-authentication-refused.html
搞一個ssh的金鑰登入,結果發現就是無法使用金鑰登入,非讓我輸入密碼。苦惱。
輸入ssh連線程式碼
ssh -i private.key -v [email protected] -p22
從連線的資訊中看不出有什麼問題。
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: publickey debug1: Offering public key: private.key debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: password
已經提示說了,使用公鑰登入,並且提供了私鑰,但是還是提示讓我輸入密碼。
但是我使用另外一個帳號去登入,發現是ok的,可以登入成功。我把成功的那個authorized_keys
複製到我的那個使用者名稱下,發現還是不能登入。但是驗證了伺服器的sshd功能是正常執行的,否則另外一個賬戶就沒辦法登入了。我覺得兩個使用者名稱的所在的環境應該是相同了,但是確實無法登入。
想到了客戶端這裡的連線沒有更多有效的資訊,那就想到了去伺服器上看看相關的資訊。vim /var/log/secure
檢視一下日誌。發現有這麼一段話:
Authentication refused: bad ownership or modes for directory /home/user/.ssh
上網搜了一下這個問題,發現原來是.ssh
的目錄許可權不對,設定一下正確的許可權:
chmod 700 ~/.ssh
在此過程中還學習到了一個sshd的測試模式。
/usr/sbin/sshd -p 10022 -d -d 以除錯模式執行。伺服器將在前臺執行併發送非常詳細的除錯日誌資訊, 伺服器將只允許接入一個連線,並且不派生出子程序。僅用於除錯目的。 使用多個 -d 選項可以輸出更詳細的除錯資訊(最多3個)。
會開啟一個sshd的除錯模式,新建一個10022埠,在客戶端連線這個埠的時候,伺服器端會有debug日誌輸出在螢幕上,這個時候就可以檢視詳細的資訊。然後再針對資訊進行解決。
總結
伺服器使用者對於ssh目錄許可權有一些許可權要求,許可權不對的話ssh無法工作,建議以下許可權作為最小的許可權。
chmod 700 .ssh # chmod 755 .ssh 也是可以的 chmod 600 .ssh/authorized_keys chmod 400 .ssh/private.key #把金鑰的許可權也設定為最小
終於又可以愉快的程式設計了。