Я использую сервер 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.
SSH говорит, что не может читать /dev/tty
потому что вы вызывали его не из консоли, а из crontab. В /dev/tty
device - это терминал контроллера для текущего процесса, и когда вы запускаете процесс из crontab, у него нет связанного терминала, поэтому он не может получить доступ к этому устройству.
Здесь есть лучшее объяснение: https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty