Mac-Osx

ssh 在沒有密碼提示的情況下掛起 - 在 root 或其他帳戶中工作

  • September 12, 2020

我有基於 ssh 密鑰的登錄工作正常。然後,我更改了電腦上的主機名,基於密鑰的登錄停止工作。似乎有道理。密鑰可能依賴於我的舊主機名。因此,我刪除了 ~/.ssh/ 中的所有密鑰和所有文件並重新生成它們(並更改了我連接到的伺服器上的授權密鑰)

現在,每當我嘗試 ssh 時,它都會在沒有密碼提示的情況下掛起,無論我嘗試 ssh 到哪裡——即使是我沒有設置基於密鑰的登錄設置的伺服器。.ssh/config 中沒有任何內容。

此外,當我“su -”root 時,ssh 可以完美執行。完全沒有問題。這只發生在我的使用者帳戶上。

以下是來自 ssh 的一些調試資訊

ssh -vv mylogin@myremoteserver.com
OpenSSH_5.2p1,OpenSSL 0.9.8k 2009 年 3 月 25 日
debug1:讀取配置數據 /Users/myname/.ssh/config
debug1:讀取配置數據 /usr/etc/ssh_config
......
debug1:主機 'myremoteserver.com' 是已知的並且與 RSA 主機密鑰匹配。
debug1:在 /Users/myname/.ssh/known_hosts:1 中找到密鑰
debug2:位設置:512/1024
debug1:ssh_rsa_verify:簽名正確
調試2:kex_derive_keys
debug2:set_newkeys:模式 1
debug1: SSH2_MSG_NEWKEYS 已發送
debug1:期待 SSH2_MSG_NEWKEYS
調試2:set_newkeys:模式0
debug1:收到 SSH2_MSG_NEWKEYS
debug1:SSH2_MSG_SERVICE_REQUEST 已發送
debug2: service_accept: ssh-userauth
debug1:收到 SSH2_MSG_SERVICE_ACCEPT

然後它就掛在這裡……

這是 dtruss(類似於 strace,但對於 OSX)在它掛起的末尾附近的輸出: sudo dtruss ssh -vv mylogin@myremoteserver.com

選擇(0x4、0x508200、0x0、0x0、0x0)= 1 0
讀(0x3, "$\222\351{L\363\261\25063sN\216\300@q7\203\276b\257\354\337\356\260!{\342\017\271=\222, \245\347t\006\225\257\333;\204\020]\242\005z#\0", 0x2000) = 48 0
寫(0x2,“debug2:service_accept:ssh-userauth\r\n\0”,0x26)= 38 0
連接(0x4,0xBFFFEEA2,0x6A)= 0 0
寫(0x4,“\0”,0x4)= 4 0
寫(0x4,“\v5\004\0”,0x1)= 1 0
讀取(0x4,“\0”,0x4)= -1 Err#4

它似乎正在嘗試閱讀一些東西,然後就掛在上面了。如果有人有一些建議或想法,我將非常感激!

您的 ssh 客戶端為您的帳戶而不是其他帳戶(root)掛起的原因可能是因為您的 ssh-agent 有問題。要麼ssh-agent沒有執行,要麼它的配置在某種程度上是錯誤的。

要確認這一點,您可以嘗試以下操作:

unset SSH_AUTH_SOCK
ssh mylogin@myremoteserver.com

如果您隨後被要求將密碼片語輸入到您的 ssh_key,這意味著您的 ssh-agent 有問題。

另請參閱我關於此相關問題的文章。

我可以讓你對反向 DNS 感興趣嗎?

本質上,客戶端在伺服器上執行反向 DNS,反之亦然。

我提出一個測試:

通過編輯 /etc/ssh/sshd_config 並確保“UseDNS”設置為“no”來禁用伺服器上的 DNS 查找。

執行“service ssh reload”(或任何導致您的 ssh 守護程序重新讀取配置的方法),然後重試。

順便說一句,它不會在很長一段時間後最終提示您,是嗎?

您可能會檢查的另一件事是查看伺服器上 /etc/hosts 的內容,以確保那裡沒有任何問題。

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