Estou executando um servidor Debian 7 Wheezy e estou tendo problemas para me conectar a outros servidores via SSH. Este problema ocorre apenas durante a execução do SSH por meio do crontab, e não de outra forma (logado como o mesmo usuário, é claro).
Ao executar um comando ssh como este usuário por meio do crontab, recebo o seguinte problema:
Host key verification failed.
Removi o ~/.ssh/known_hosts
arquivo e conectei-me manualmente ao servidor para que a chave do host estivesse correta.
Ao executar o SSH com o -v
sinalizador, recebo o seguinte:
debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.
Se eu listar, /dev/tty
tem 666 permissões:
crw-rw-rw- 1 root root 5, 0 Jun 21 15:49 /dev/tty
Também configurei manualmente as permissões para 666 depois de listar /dev/tty
para ter certeza absoluta.
Por que o SSH diz que não consegue ler / dev/tty
? Estou explorando isso há semanas e não encontrei uma resposta. Alguém tem uma pista?
Responder1
Você não pode se conectar com uma chave protegida por senha a partir de um script sem um agente (ou pelo menos uma maneira de fornecer uma senha), o daemon ssh está aguardando uma entrada que você não pode fornecer sem tty.
Responder2
O SSH diz que não pode ler /dev/tty
porque você não o chamou de um console, mas do crontab. O /dev/tty
dispositivo é o terminal controlador do processo atual e quando você inicia um processo a partir do crontab ele não possui terminal associado, portanto não pode acessar esse dispositivo.
Há uma explicação melhor aqui:https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty