Autossh pede senha quando rodando com sudo (ou de upstart)

2

Eu tenho um trabalho iniciante /etc/init/tunnel.conf :

description "SSH Tunnel"

start on (net-device-up IFACE=eth0)
stop on runlevel[016]

respawn

exec autossh -nNT -o ServerAliveInterval=15 -R 12345:localhost:22 myuser@myserver

Quando olho para o /var/log/upstart/tunnel.log :

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).

mas se eu tentar do terminal

autossh -R 12345:localhost:22 myuser@myserver

Ele se conecta ao myserver sem me pedir senha (eu copiei as chaves SSH)

Quando eu executo usando sudo :

sudo autossh -R 12345:localhost:22 myuser@myserver

Ele me pergunta por senha do myserver, então eu acho que esse é o problema que tenho com o trabalho inicial. Por que o SSH está me pedindo senha, eu o executo como raiz?

    
por Leosar 05.05.2014 / 23:24

1 resposta

9

Quando autossh é chamado pelo processo sudo ou init, autossh usa o arquivo identity / ssh-keys fornecido pelo usuário raiz (por exemplo, /root/.ssh/sshkeys ). Quando você tentar executar autossh do terminal, talvez você use um usuário não-root . Portanto, autossh use o arquivo identity / ssh-keys fornecido por esse usuário (por exemplo, /home/non-root/.ssh/sshkeys ).

Para obter o comportamento esperado, você pode fornecer o arquivo de identidade em tunnel.conf . Para fazer isso, modifique a última linha para

exec autossh -nNT -i /home/non-root/.ssh/sshkeys -o ServerAliveInterval=15 -R 12345:localhost:22 myuser@myserver

Mais informações em Autossh com o Ubuntu Upstart

    
por 06.05.2014 / 06:27