Remote-Befehl in der SSH-Konfigurationsdatei

12

Ich möchte ssh_config so einstellen, dass ich nach der Eingabe ssh my_hostnamein einem bestimmten Ordner lande . Genau wie ich tippen würde cd /folder/another_one/much_much_deeper/.

Wie kann ich das erreichen?

BEARBEITEN. Es wurde als Duplikat von "How to ssh in dir ..." markiert, aber es ist nicht meine Frage.

Ich weiß, dass ich alle Befehle ausführen kann, indem ich sie auf den sshBefehl beschneide . Meine Frage betrifft die /ssh_configDatei, nicht den Befehl.

Kazz
quelle
Ich habe meine Frage geklärt.
Kazz
Daran ist nichts man ssh_config. Der nächstgelegene ist LocalCommand, kann jedoch nicht für interaktive Befehle verwendet werden.
Lgeorget
1
Könnten Sie bitte (in Ihrer Frage) erklären, warum Sie der Meinung sind, dass die Änderung vorgenommen werden muss ssh_config? Es gibt wahrscheinlich bessere Orte, um das Startverzeichnis zu konfigurieren, und es wäre hilfreich zu verstehen, warum es diese besondere Einschränkung für eine mögliche Lösung gibt.
Roaima
1
Die Tatsache, dass "es nicht möglich ist ssh_config", macht dies nicht zu einem Duplikat von "mach es in Bash". "Das kannst du nicht" ist eine absolut gültige Antwort.
Franklin Yu
1
@terdon Die Tatsache "es ist nicht möglich" kann sich jedoch im Laufe der Zeit ändern. Ja, das ist jetzt möglich. Jetzt brauche ich (und jeder, der in Zukunft kommt, um dies zu sehen) eine neue Antwort, und wir bleiben hier stecken. Wenn dies nicht wieder geöffnet wird, stelle ich mir vor, dass der gewünschte Weg darin besteht, eine neue Frage zu erstellen (und zu beantworten)?
Franklin Yu

Antworten:

19

Bis OpenSSH 7.6 gab es dafür keine Möglichkeit . Aus dem Handbuch :

RemoteCommand

Gibt einen Befehl an, der auf dem Remotecomputer ausgeführt werden soll, nachdem eine erfolgreiche Verbindung zum Server hergestellt wurde. Die Befehlszeichenfolge erstreckt sich bis zum Ende der Zeile und wird mit der Shell des Benutzers ausgeführt. Argumente zur RemoteCommandAnnahme der im Abschnitt TOKENS beschriebenen Token .

Also jetzt kannst du haben

RemoteCommand cd /tmp && bash

Es wurde in diesem Commit eingeführt .

Franklin Yu
quelle
5
Hinzufügen, RequestTTY forcewenn für den Remote-Befehl ein TTY erforderlich ist. Zum Beispiel:tmux new -As my-session
Aaron Blenkush
Dies ist die Killer- sshOption. Danke!
nhed
Dies macht es unmöglich, andere Befehle auszuführen, die beispielsweise ssh my_hostname lsmit fehlschlagen Cannot execute command-line and remote command.. Andere Tools, die ssh wie git und rsync verwenden, schlagen ebenfalls fehl.
Remram
2

Ich möchte ssh_config so einstellen, nachdem ich nur ssh my_hostname eingegeben habe

Es ist nicht möglich. Es gibt keine Möglichkeit, dies zu erreichen ssh_config. Am nächsten daran ist das Einrichten eines Bash-Alias ​​oder einer Bash-Funktion, z

myssh() {
    ssh -t $1 "cd /dir/; bash"
}
Jakuje
quelle
1

Ich antwortete auf ein anderes Ticket, bevor jemand darauf hingewiesen hatte, dass dies das Original war.

Wenn Sie einen Mac verwenden, empfehle ich, iTerm2 zu verwenden und ein Profil zu erstellen. Geben Sie ssh my_hostnamedie Befehlszeile ein und fügen Sie den Befehl cd /folder/another_one/much_much_deeper/im Feld Senden-Text beim Start hinzu. Wenn Sie eine Verbindung zu den Sitzungen herstellen, wird ssh an Ihren Hostnamen und cd an das Verzeichnis in Ihrem Fall gesendet oder ein Befehl ausgeführt.

Govna
quelle