ssh 在沒有密碼提示的情況下掛起 - 在 root 或其他帳戶中工作
我有基於 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 的內容,以確保那裡沒有任何問題。