Ich möchte einen Alias in meiner Konfigurationsdatei einrichten, der das gleiche Ergebnis wie dieser Befehl hat:
ssh -N devdb -L 1234:127.0.0.1:1234
Mein .ssh / config Eintrag für devdb
:
Host devdb
User someuser
HostName the_hostname
LocalForward 1234 127.0.0.1:1234
Was muss ich in der obigen Konfiguration tun, um eine Shell nicht zu starten?
ssh
ssh-config
Mikeb
quelle
quelle
Antworten:
Also
ssh.c
für OpenSSH 7.6p1 finden wirDas Gleiche
-N
gilt für zwei Dinge:no_shell_flag
nur inssh.c
den Optionen-W
oder angezeigt und ist nur für diese aktiviert.-N
Andernfalls wird es in einigen Logikblöcken angezeigt, die sich auf dieControlPersist
Überprüfung der Integrität von Hintergrundgabeln beziehen . Ich sehe keinen Weg, wie eine Option sie direkt setzen könnte.readconf.c
demrequest_tty
entspricht dieRequestTTY
Option detailliert inssh_config(5)
.Dies lässt (abgesehen davon, dass Affen OpenSSH patchen und neu kompilieren oder nach einer
ssh_config
Option zum Umschalten fragenno_shell_flag
...) etwas wie:Was technisch eine Shell startet, aber diese Shell sollte sich sofort durch das
cat
Programm ersetzen , das dann blockieren sollte, damit die Portweiterleitung in der Zwischenzeit verwendet werden kann.cat
ist portabel, verbraucht aber Eingaben (falls vorhanden) oder kann fehlschlagen (falls die Standardeingabe geschlossen ist). Eine andere Möglichkeit wäre, etwas auszuführen, das nur blockiert .quelle
.ssh/config
... gut gemacht machst !RemoteCommand exec sleep infinity
.@thrig hat die richtige Antwort, basierend auf Ihrem Wunsch, dies nur innerhalb von zu tun
.ssh/config
Man könnte auch in Betracht ziehen, eine Funktion mit Standardeinstellungen zu verwenden, um andere Tunnelbefehle schnell zu machen (insbesondere, wenn sich der Tunnel nicht ändert, sondern nur der Host).
Hier sind drei Beispiele für die Verwendung: Ohne Argumente werden die in der Funktion angegebenen Standardwerte verwendet:
Führen Sie mit dem Tunnelstandard auf einem anderen Host aus:
Führen Sie mit beiden Standardeinstellungen einen vollständigen einmaligen Vorgang auf einem neuen Host / Tunnel aus:
quelle
Ein nützlicherer Remote-Befehl basierend auf der Antwort von @ thrig:
Das
read -r -d '' _
blockiert die Verbindung, bis der Benutzer drücktcontrol+c
.quelle