So richten Sie einen automatischen SSH-Tunnel ein

So richten Sie einen automatischen SSH-Tunnel ein

Ich habe die Remote-Weiterleitungsfunktion von SSH verwendet, um Verbindungen zu einem Unix-Domain-Socket auf einem Remote-Host example.coman einen Unix-Domain-Socket auf meinem lokalen Computer weiterzuleiten. Auf beiden Computern läuft Linux. Der Befehl lautet wie folgt:

ssh -N -n -R /home/guest/daemon.sock:/var/run/daemon.sock [email protected]

Ich möchte dies automatisieren, sodass der Tunnel bei jedem Booten meines Rechners automatisch erstellt wird. Ich habe die Datei /etc/ssh/ssh_host_rsa_key.pub von meinem lokalen Rechner in den Remote-Rechner kopiert /home/guest/.ssh/id_rsa.pubund die folgenden Zeilen an /etc/ssh/ssh_configmeinen lokalen Rechner angehängt:

Host example.com User guest IdentityFile /etc/ssh/ssh_host_rsa_key RemoteForward /home/guest/daemon.sock /var/run/daemon.sock

Aus Sicherheitsgründen möchte ich den Benutzer „Gast“ auf dem Remote-Rechner außerdem auf die Tunnelerstellung und sonst nichts beschränken. Ich habe daher die folgenden Zeilen an /etc/ssh/sshd_configden Remote-Host angehängt:

match User guest AllowTcpForwarding yes X11Forwarding no AllowAgentForwarding no ForceCommand /bin/false

Hier ist das Problem: Beim Hochfahren meines lokalen Rechners passiert nichts. Ich bin sicher, dass ich etwas Wichtiges übersehen habe, konnte aber nicht herausfinden, was. Irgendwelche Ideen?

Antwort1

Die ssh_configDatei trägt absolut nichts zur Automatisierung von SSH-Verbindungen bei.

Es dient lediglich der Definition derStandardoptionen– wenn Sie ausführen ssh example.com, wird der entsprechende Abschnitt „Host“ nachgeschlagen und alle Optionen zur Befehlszeile hinzugefügt. (Man könnte sagen, es ähnelt Shell-Aliasen.) Die Option „pro Benutzer“ ~/.ssh/configwird häufiger für denselben Zweck verwendet.

Aber es bleibt immer noch Ihnen überlassen,laufender sshBefehl, z. B. über eine systemd .service-Einheit, ein /etc/init.d-Skript oder einen Cron-Job. (Vergessen Sie nicht, im Dienst zu definieren, dass er gestartet werden muss, nachdem das Netzwerk konfiguriert wurde.)

(DuMaiweiterhin ssh_config verwenden, aber es ist hier nutzlos und wird nurregulärVerbindungen zu example.comlästig. Geben Sie stattdessen einfach die gleichen Optionen direkt in der Servicedatei an.)


Obwohl es nicht illegal ist, ist es etwas seltsam, den Hostschlüssel für die clientseitige Authentifizierung wiederzuverwenden. Es wäre besser, ein dediziertes Schlüsselpaar mit zu generieren ssh-keygen.

Und wie @Paul im Kommentar anmerkte, müssen vertrauenswürdige Schlüssel aufgeführt werden authorized_keys– der SSH-Server kümmert sich nicht um die id_*Dateien.

verwandte Informationen