尽管 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

相关内容