Назад | Перейти на главную страницу

Проверка ключа хоста не удалась, хотя known_hosts верен

Я использую сервер Debian 7 Wheezy, и у меня проблемы с подключением к другим серверам через SSH. Эта проблема возникает только при запуске SSH через crontab, и никак иначе (конечно, вы вошли в систему как тот же пользователь).

При запуске команды ssh от имени этого пользователя через crontab у меня возникает следующая проблема:

Host key verification failed.

Я удалил ~/.ssh/known_hosts файл и вручную подключился к серверу, чтобы ключ хоста был правильным.

При запуске SSH с -v flag, я получаю следующее:

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

Я также вручную установил разрешения на 666 после того, как указал /dev/tty чтобы быть полностью уверенным.

Почему SSH не может читать /dev/tty? Я исследовал это несколько недель и не нашел ответа. У кого-нибудь есть ключ?

Вы не можете подключиться с помощью ключа, защищенного парольной фразой, из сценария без агента (или, по крайней мере, способа предоставить парольную фразу), демон ssh ожидает ввода, который вы не можете предоставить без tty.

видеть: https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt

SSH говорит, что не может читать /dev/tty потому что вы вызывали его не из консоли, а из crontab. В /dev/tty device - это терминал контроллера для текущего процесса, и когда вы запускаете процесс из crontab, у него нет связанного терминала, поэтому он не может получить доступ к этому устройству.

Здесь есть лучшее объяснение: https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty