Я использую сервер Debian 7 Wheezy и у меня возникли проблемы с подключением к другим серверам по SSH. Эта проблема возникает только при запуске SSH через crontab, и никак иначе (конечно, при входе в систему под тем же пользователем).
При запуске команды ssh от имени этого пользователя через crontab возникает следующая проблема:
Host key verification failed.
Я удалил ~/.ssh/known_hosts
файл и вручную подключился к серверу, чтобы ключ хоста был правильным.
При запуске SSH с этим -v
флагом я получаю следующее:
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
? Я изучаю это уже несколько недель и не нашел ответа. Есть у кого-нибудь подсказка?
решение1
Вы не можете подключиться с помощью защищенного ключом парольной фразы из скрипта без агента (или, по крайней мере, способа предоставления парольной фразы), демон ssh ждет входных данных, которые вы не можете предоставить без tty.
решение2
SSH говорит, что не может прочитать, /dev/tty
потому что вы вызвали его не из консоли, а из crontab. Устройство /dev/tty
является терминалом контроллера для текущего процесса, и когда вы запускаете процесс из crontab, у него нет связанного терминала, поэтому он не может получить доступ к этому устройству.
Вот лучшее объяснение:https://stackoverflow.com/questions/8514735/что-такое-особенное-о-dev-tty