autossh en segundo plano no funciona

12

He configurado un túnel a través de autossh.

Esto funciona:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 [email protected]

Me gustaría ejecutar autossh en segundo plano. Parece fácil usar la -fopción.

Sin embargo, esto no funciona:

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 [email protected]

Autossh funciona bien en segundo plano, pero la conexión ssh parece fallar cada vez. En / var / syslog veo múltiples ocurrencias de:

autossh[3420]: ssh exited with error status 255; restarting ssh

¿Qué estoy haciendo mal? Una suposición descabellada es que tiene algo que ver con la autenticación a través del archivo de clave. ¿Cómo puedo depurar esto? (Agregar -v a las opciones ssh no parece iniciar sesión en ningún lado).

Editar: obtuve algunos registros ssh usando la opción -y

/usr/bin/ssh[3484]: debug1: Next authentication method: publickey
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_rsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_dsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_ecdsa
/usr/bin/ssh[3484]: debug1: No more authentication methods to try.
/usr/bin/ssh[3484]: fatal: Permission denied (publickey).
autossh[3469]: ssh exited with error status 255; restarting ssh

Entonces parece que autossh no acepta mi archivo de identidad ( -i myIdFile) cuando uso la opción -f. ¿Porqué es eso?

(Autossh 1.4c en Raspian)

Henning77
fuente
¿Por qué usar autossh en absoluto? Puede usar systemd para el "reinicio en caso de falla". Creé
guettli

Respuestas:

29

Parece que cuando autossh cae al fondo (opción -f) está cambiando el directorio de trabajo, lo que significa que las rutas relativas ya no funcionan. O más específico: al ingresar la ruta absoluta de su archivo de identificación , probablemente tendrá éxito.

Volví a crear el escenario creando una clave sin contraseña en una ubicación no predeterminada:

~/$ mkdir test
~/$ cd test
~/test$ ssh-keygen -f test_id_rsa

Simplemente presiono enter dos veces para generar una clave que no está protegida por una contraseña.

Copié la nueva clave en mi servidor (que permite la autenticación de contraseña actualmente):

~/test$ ssh-copy-id -i test_id_rsa user@server

Primero confirmé que la clave funcionaba con ssh normal, luego usé autossh como tú:

~/test$ ssh -i test_id_rsa user@server
~/test$ autossh -M 13000 -N -i test_id_rsa user@server
^C

Ambos funcionaron bien, así que recreé el problema que tenía:

~/test$ autossh -f -M 13000 -N -i test_id_rsa user@server

Esto no funcionó y se escribió lo siguiente para /var/log/syslog:

autossh [2406]: ssh salió prematuramente con el estado 255; autossh saliendo

Al cambiar la ruta del archivo de claves para que sea absoluta, funcionó:

~/test$ autossh -f -M 13000 -N -i /home/user/test/test_id_rsa user@server

No hay errores en /var/log/syslog.

jmidgren
fuente
Impresionante, esto funciona.
henning77
¡Salvaste mi día!
arno_v
2
La opción -N es importante, de lo contrario obtendría "ssh salido con el estado 0; autossh saliendo". ¡Gracias!
user30747
Confirmado, yo también tuve que agregar la ruta al archivo "id_rsa" así: autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa (gracias @jmidgren)
Rich
4

No estoy seguro de lo que está sucediendo con el -f, pero tampoco podrías hacerlo:

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 [email protected] &
Brian P
fuente
nohup funciona para mí, incluso sin especificar el archivo de clave.
valadil
nohupTambién trabajó para correr autosshbajo runiten Alpine Linux
Stuart Cardall
0

Agregue los siguientes parámetros a SSH para omitir "¿Está seguro de que desea continuar conectando (sí / no)?"

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

El comando final estaría en el siguiente formato:

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
vahid-dan
fuente
esto funciona para mi.
bluebird_lboro
No lo habilites a StrictHostKeyChecking=nomenos que te estés conectando a un juguete efímero conocido y estés eligiendo ser perezoso.
Dolph