l'autossh in background non funziona


12

Ho creato un tunnel tramite autossh.

Questo funziona:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Vorrei eseguire l'autossh in background. Sembra facile usando l' -fopzione.

Questo non funziona, tuttavia:

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Autossh funziona in background, ma la connessione ssh sembra fallire ogni volta. In / var / syslog vedo più ricorrenze di:

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

Che cosa sto facendo di sbagliato? Un'ipotesi selvaggia è che abbia qualcosa a che fare con l'autenticazione tramite file chiave. Come posso eseguire il debug di questo (aggiungendo -v alle opzioni ssh non sembra accedere da nessuna parte).

Modifica: ho ottenuto alcuni registri ssh usando l'opzione -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

Quindi sembra che autossh non accetti il ​​mio file identiy ( -i myIdFile) quando si usa l'opzione -f. Perché?

(autossh 1.4c su Raspian)


Perché usare l'autossh? È possibile utilizzare systemd per il "riavvio in caso di errore". Ho creato un riassunto con la mia soluzione: gist.github.com/guettli/…
guettli

Risposte:


29

Sembra che quando l'autossh cade sullo sfondo (opzione -f) sta cambiando la directory di lavoro, il che significa che i percorsi relativi non funzionano più. O più specifico: inserendo il percorso assoluto del tuo file ID probabilmente avrai successo.

Ho ricreato lo scenario creando una chiave senza password in una posizione non predefinita:

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

Ho semplicemente premuto Invio due volte per generare una chiave che non è protetta da una password.

Ho copiato la nuova chiave sul mio server (che attualmente consente l'autenticazione con password):

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

Prima ho confermato che la chiave funzionava con ssh normale, quindi usando autossh come te:

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

Entrambi hanno funzionato bene, quindi ho ricreato il problema che hai avuto:

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

Questo non ha funzionato ed è stato scritto quanto segue /var/log/syslog:

autossh [2406]: ssh è uscito prematuramente con lo stato 255; uscita automatica

Modificando il percorso del file di chiavi in ​​assoluto, ha funzionato però:

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

Nessun errore in /var/log/syslog.


fantastico, questo funziona.
henning77,

Mi hai salvato la giornata!
arno_v,

2
L'opzione -N è importante, altrimenti otterrai "ssh uscito con lo stato 0; autossh exit". Grazie!
user30747,

Confermato, anch'io dovevo solo aggiungere il percorso al file "id_rsa" in questo modo: autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa (grazie @jmidgren)
Rich

4

Non sei sicuro di cosa stia succedendo con -f ma potresti anche nohup:

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 autossh@myhost.com &

nohup funziona per me, anche senza specificare il file chiave.
valadil,

nohuplavorato anche per l'esecuzione di autosshsotto runitin Alpine Linux
Stuart Cardall

0

Aggiungi i seguenti parametri a SSH per bypassare "Sei sicuro di voler continuare la connessione (sì / no)?"

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

Il comando finale sarebbe nel seguente formato:

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

per me funziona.
bluebird_lboro,

Non abilitare a StrictHostKeyChecking=nomeno che non ti colleghi a un giocattolo effimero ben noto e non stai scegliendo di essere pigro.
Dolph,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.