即使known_hosts正確,主機金鑰驗證失敗

即使known_hosts正確,主機金鑰驗證失敗

我正在運行 Debian 7 Wheezy 伺服器,並且在透過 SSH 連接到其他伺服器時遇到問題。此問題僅在透過 crontab 執行 SSH 時出現,其他情況下不會出現(當然以相同使用者登入)。

當透過 crontab 以該使用者身分執行 ssh 命令時,我遇到以下問題:

Host key verification failed.

我已刪除該~/.ssh/known_hosts文件並手動連接到伺服器以使主機密鑰正確。

當使用該-v標誌運行 SSH 時,我得到以下資訊:

debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.

如果我列出/dev/tty它有 666 權限:

crw-rw-rw- 1 root root 5, 0 Jun 21 15:49 /dev/tty

/dev/tty為了完全確定,我在列出後還手動將權限設為 666 。

為什麼 SSH 說無法讀取 / dev/tty?我已經探索這個問題好幾個星期了,但還沒有找到答案。有人有線索嗎?

答案1

如果沒有代理(或至少有一種提供密碼的方法),您就無法從腳本中使用密碼保護的密鑰進行連接,ssh 守護進程正在等待您在沒有 tty 的情況下無法提供的輸入。

看:https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt

答案2

SSH 說它無法讀取,/dev/tty因為您不是從控制台呼叫它,而是從 crontab 呼叫它。該/dev/tty裝置是目前進程的控制器終端,當您從 crontab 啟動進程時,它沒有關聯的終端,因此無法存取該裝置。

這裡有一個更好的解釋:https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty

相關內容