Ssh

一位使用者的 SSH 密鑰失敗

  • July 8, 2015

我剛剛建立了一個新的 Debian 伺服器。我禁用了 root SSH 和密碼驗證,所以你必須使用密鑰文件。

對於我的主要使用者,一切都按預期工作。我使用ssh-keygen -t dsa並得到了自己的公鑰和私鑰。將一個放在授權密鑰中,將另一個放在本地的 pem 文件中。

我想創建一個可以用來部署東西的使用者,所以我做了基本相同的過程。我adduser編輯了它,創建了一個.ssh文件夾,執行ssh-keygen -t dsa(我也嘗試了 RSA),將密鑰放在適當的位置。

沒運氣。我收到一個Permission denied (publickey)錯誤。當我使用與有效帳戶完全相同的密鑰時,同樣的錯誤。當我啟用密碼驗證時,我可以使用密碼通過 SSH 登錄。

我該如何調試?

編輯

詳細的 ssh 輸出(deployer.pem 是正確的鍵):

debug2:鍵:/Users/eli/.ec2/deployer.pem (0x100126830)
debug2:鍵:/Users/eli/.ec2/deployer.pem (0x100126b30)
debug2:鍵:/Users/eli/.ec2/deployer.pem (0x0)
debug1:可以繼續的身份驗證:publickey
debug3:重新開始,傳遞了不同的列表公鑰
debug3:首選公鑰、鍵盤互動、密碼
debug3: authmethod_lookup 公鑰
debug3:剩餘首選:鍵盤互動,密碼
debug3:authmethod_is_enabled 公鑰
debug1:下一個認證方式:publickey
debug1:提供公鑰:/Users/eli/.ssh/id_rsa
調試3:send_pubkey_test
debug2:我們發送了一個公鑰包,等待回复
debug1:可以繼續的身份驗證:publickey
debug1:提供公鑰:eli.pem
調試3:send_pubkey_test
debug2:我們發送了一個公鑰包,等待回复
debug1:可以繼續的身份驗證:publickey
debug1:提供公鑰:/Users/eli/.ec2/deployer.pem
調試3:send_pubkey_test
debug2:我們發送了一個公鑰包,等待回复
debug1:可以繼續的身份驗證:publickey
debug1:提供公鑰:/Users/eli/.ec2/deployer.pem
調試3:send_pubkey_test
debug2:我們發送了一個公鑰包,等待回复
debug1:可以繼續的身份驗證:publickey
debug1:嘗試私鑰:/Users/eli/.ec2/deployer.pem
debug1:讀取 PEM 私鑰完成:輸入 DSA
調試3:sign_and_send_pubkey
debug2:我們發送了一個公鑰包,等待回复
debug1:可以繼續的身份驗證:publickey
debug2:我們沒有發送數據包,禁用方法
debug1:沒有更多的身份驗證方法可以嘗試。
權限被拒絕(公鑰)。

兩部分:首先,在您的 ssh 伺服器上進行調試。編輯/etc/ssh/sshd_config並將 LogLevel 增加到 DEBUG。然後強制你的 ssh 伺服器重新載入它的配置killall -HUP <sshd pid>

這將導致伺服器向您的/var/log/secure和/或/var/log/auth日誌文件添加更多詳細資訊。

其次(實際上你不能先嘗試這個),增加客戶端的調試級別。使用 ssh 進入盒子

$ ssh -vvv hostname

這將列印出更多關於流程失敗的資訊。

如果您確實在 ssh 伺服器上調高了調試級別,請不要忘記在完成後將其調低。

引用自:https://serverfault.com/questions/220788