autossh en arrière-plan ne fonctionne pas


12

J'ai mis en place un tunnel via autossh.

Cela marche:

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

Je voudrais exécuter autossh en arrière-plan. Semble facile en utilisant l' -foption.

Cela ne fonctionne cependant pas:

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

Autossh fonctionne correctement en arrière-plan, mais la connexion ssh semble échouer à chaque fois. Dans / var / syslog, je vois plusieurs occurrences de:

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

Qu'est-ce que je fais mal? Une supposition sauvage est que cela a quelque chose à voir avec l'authentification via le fichier de clé. Comment puis-je déboguer cela (l'ajout de -v aux options ssh ne semble pas se connecter n'importe où).

Edit: j'ai reçu quelques journaux ssh en utilisant l'option -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

Il semble donc qu'autossh n'accepte pas mon fichier identiy ( -i myIdFile) lorsque vous utilisez l'option -f. Pourquoi donc?

(autossh 1.4c sur Raspian)


Pourquoi utiliser autossh? Vous pouvez utiliser systemd pour le "redémarrage en cas d'échec". J'ai créé un gist avec ma solution: gist.github.com/guettli/…
guettli

Réponses:


29

Il semble que lorsque autossh tombe en arrière-plan (option -f), il change le répertoire de travail, ce qui signifie que les chemins relatifs ne fonctionnent plus. Ou plus spécifique: en entrant le chemin absolu de votre fichier d'identification, vous réussirez probablement.

J'ai recréé le scénario en créant une clé sans mot de passe à un emplacement non défini par défaut:

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

Je tape simplement deux fois sur Entrée pour générer une clé qui n'est pas protégée par un mot de passe.

J'ai copié la nouvelle clé sur mon serveur (qui permet actuellement l'authentification par mot de passe):

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

J'ai d'abord confirmé que la clé fonctionnait avec ssh normal, puis en utilisant autossh comme vous:

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

Ils fonctionnaient tous les deux très bien, alors j'ai recréé le problème que vous aviez:

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

Cela n'a pas fonctionné et ce qui suit a été écrit à /var/log/syslog:

autossh [2406]: ssh s'est arrêté prématurément avec le statut 255; sortie automatique

En changeant le chemin du fichier clé pour qu'il soit absolu, cela a fonctionné:

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

Aucune erreur /var/log/syslog.


génial, cela fonctionne.
henning77

Tu m'as sauvé la journée!
arno_v

2
L'option -N est importante, sinon vous obtiendrez "ssh quitté avec le statut 0; sortie automatique". Merci!
user30747

Confirmé, moi aussi j'ai juste dû ajouter le chemin d'accès au fichier "id_rsa" comme ceci: autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa (merci @jmidgren)
Rich

4

Je ne sais pas ce qui se passe avec le -f mais vous pouvez aussi le faire:

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

nohup fonctionne pour moi, même sans spécifier le fichier clé.
valadil

nohupa également travaillé pour la course autosshsous runitAlpine Linux
Stuart Cardall

0

Ajoutez les paramètres suivants à SSH pour contourner "Êtes-vous sûr de vouloir continuer à vous connecter (oui / non)?"

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

La commande finale serait au format suivant:

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

ça marche pour moi.
bluebird_lboro

Ne l'activez StrictHostKeyChecking=noque si vous vous connectez à un jouet éphémère reconnu et que vous choisissez d'être paresseux.
Dolph
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.