
Ich habe die Remote-Weiterleitungsfunktion von SSH verwendet, um Verbindungen zu einem Unix-Domain-Socket auf einem Remote-Host example.com
an 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.pub
und die folgenden Zeilen an /etc/ssh/ssh_config
meinen 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_config
den 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_config
Datei 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/config
wird häufiger für denselben Zweck verwendet.
Aber es bleibt immer noch Ihnen überlassen,laufender ssh
Befehl, 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.com
lä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.