Autossh kann im Hintergrund auch mit absolutem Pfad nicht verwendet werden

7

Ich würde gerne autossh so einstellen, dass es beim Booten ausgeführt wird, indem ich es hinzufüge /etc/rc.local.

Dieser Befehl funktioniert:

autossh -i /root/.ssh/id_rsa -R 2522:localhost:22 user@address

Aber wenn ich die -fOption hinzufüge

autossh -f -i /root/.ssh/id_rsa -R 2522:localhost:22 user@address

Die SSH-Sitzung wird nicht gestartet.

Wie Sie sehen können, verwende ich einen absoluten Pfad für meine Identitätsdatei. Dies scheint also ein anderes Problem zu sein als das hier angegebene: Autossh im Hintergrund funktioniert nicht

Von /var/log/syslog:

Oct 18 11:08:39 raspberrypi autossh[2417]: starting ssh (count 1)
Oct 18 11:08:39 raspberrypi autossh[2417]: ssh child pid is 2418
Oct 18 11:08:39 raspberrypi autossh[2417]: ssh exited with status 0; autossh exiting

Ich benutze es mit Debian Wheezy auf einem Himbeer-Pi, Autossh Version 1.4c.

Könnte es sein, dass die -fOption stattdessen an ssh übergeben wird?

Zagorax
quelle

Antworten:

15

Wenn Sie autossh ohne starten -f, erhalten Sie eine Shell. Während die Shell arbeitet, erhalten Sie eine Portweiterleitung. Nach dem Abmelden wird ssh mit dem Exit-Code 0 beendet und autossh weiß, dass die ssh-Sitzung nicht erneut gestartet werden muss.

Wenn Sie mit autossh beginnen -f, wird es auch -fan ssh übergeben. ssh läuft dann im Hintergrund und gibt Ihnen keine Shell. Da Sie keine anderen Flags oder Remote-Befehle angegeben haben, wird ssh sofort mit dem Status 0 beendet (nichts zu tun), und autossh startet es nicht von vorne.

Fügen Sie einfach eine -NOption hinzu, um dies zu vermeiden:

-N      Do not execute a remote command.  This is useful for just forwarding
        ports (protocol version 2 only)

So was:

autossh -f -N -i /root/.ssh/id_rsa -R 2522:localhost:22 user@address
Cronfy
quelle
4
Dies scheint zu funktionieren, widerspricht jedoch dem, was auf der Manpage steht: -f causes autossh to drop to the background before running ssh. The -f flag is stripped from arguments passed to ssh.
Jay K