Autossh request un mot de passe lors de l'exécution avec sudo (ou depuis le démarrage)

J'ai un travail upstart /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 

Lorsque je regarde le /var/log/upstart/tunnel.log :

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

mais si j'essaie à partir du terminal

 autossh -R 12345:localhost:22 myuser@myserver 

Il se connecte à myserver sans me requestr de mot de passe (j'ai copié les keys SSH)

Quand je l'exécute en utilisant sudo :

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

Il me request le mot de passe myserver, alors je suppose que c'est le problème que j'ai avec le travail initial. Pourquoi SSH me request le mot de passe, je l'exécute en tant que racine?

Lorsque autossh invoqué par sudo ou init process, autossh utilise le autossh identité / ssh-keys fourni par l' user root (p. /root/.ssh/sshkeys . /root/.ssh/sshkeys ). Lorsque vous essayez d'exécuter autossh depuis le terminal, peut-être que vous utilisez un user non root . Ainsi, autossh utilise le autossh identité / ssh-keys fourni par cet user (par exemple, /home/non-root/.ssh/sshkeys ).

Pour get un comportement attendu, vous pouvez fournir un file d'identité dans tunnel.conf . Pour ce faire, modifiez la dernière ligne vers

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

Plus d'informations dans Autossh avec Ubuntu Upstart