.ssh / config zum Starten der Remote-Sitzung in zsh


11

Ich möchte eine Remote-Sitzung starten, ohne den folgenden Befehl einzugeben

ssh user@remoteserverip -t zsh

Ich weiß, dass ich die Hostnamen in ändern kann, um ~/.ssh/configeinfach so etwas zu verwenden:

ssh serveralias -t zsh

Aber ich möchte den -t zshParameter entfernen .

Gibt es eine Möglichkeit, dies zu erreichen, ohne eine Funktion zu schreiben?


Antworten:


6

Ich denke nicht, dass das mit möglich ist ~/.ssh/config. Dies -tkann durch Hinzufügen von a abgedeckt werden RequestTTY yes, aber es scheint nicht, dass Sie den Remote-Befehl in angeben können ~/.ssh/config.

Mit können zshSie jedoch Folgendes hinzufügen:

alias -g 'serveralias=serveralias -t zsh'

zu deinem ~/.zshrc.

Oder machen Sie eine Funktion wie:

zssh() ssh "$@" -t zsh

Ist das aliaswirklich richtig? Überprüfen Sie Ihre Angebote.
Ein CVn

Ich denke, ich werde mit dieser Lösung gehen, danke!
Brngp

5

Ich stimme @Stephane zu, dass es keine Möglichkeit gibt, dies mit dem zu tun ~/.ssh/config file. Ein anderer Ansatz wäre, die ~/.ssh/authorized_keysDatei auf dem Remote-Server zu verwenden. Wenn Sie eine Zeile wie diese hinzufügen:

command="exec zsh" ssh-dss ..... rest of key ....

Dann können Sie einfach wie gewohnt ssh und Sie erhalten ein zsh auf dem Remote-Server.

Beispiel

Auf dem Server ssh zu remote.

$ ssh saml@greeneggs

Bestätigen Sie auf dem Remote-Server, dass wir uns in einem befinden zsh.

[saml@greeneggs]~% ps -eaf|grep $$
saml      1974  1973  1 10:34 pts/3    00:00:00 zsh
saml      2023  1974  0 10:34 pts/3    00:00:00 ps -eaf
saml      2024  1974  0 10:34 pts/3    00:00:00 grep --color=auto 1974

Mit dieser Datei können Sie ausführlichere Aufgaben ausführen. Lesen Sie die folgenden Fragen und Antworten mit dem Titel: ssh, starten Sie eine bestimmte Shell und führen Sie einen Befehl auf dem Remotecomputer aus. .


command="exec zsh"ist eine schlechte Idee: Es macht es unmöglich, ssh mit einem expliziten Befehl auszuführen (also auf Wiedersehen, scp, rsync, ...). unix.stackexchange.com/a/20739 zeigt, wie dies anständig gemacht wird.
Gilles 'SO - hör auf böse zu sein'

Mir war nicht bewusst, dass es möglich ist, die autorisierten_Tasten zum Ausführen von Befehlen zu verwenden. Es ist eine ziemlich gute Idee, aber ich werde die Lösung von stephane verwenden, weil Gilles auf das Problem hingewiesen hat. Danke
brngp

@ Gilles - Ja, ich habe Ihre Lösung gefunden und hier nur das Potenzial aufgezeigt. Ich wollte Ihre Lösung nicht einfach hier kopieren. Deshalb habe ich unten in meiner Antwort auf Ihre verwiesen.
slm

4

Für alle, die Jahre später hier ankommen, ist es seit 2017 möglich, alles in die Konfigurationsdatei aufzunehmen:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh

Beste Antwort ab 2019. Diese Antwort benötigt mehr Upvotes!
GeekQ


0

Sie sollten die System-Shell-Einstellung besser ändern.

  1. Stellen Sie eine normale Verbindung zum Server her. ssh serveralias
  2. Ausführen chsh, um die System-Shell zu ändern
  3. Geben Sie ein /bin/zsh, um es auf zsh zu setzen
  4. Verbinde ssh serveraliasdich wieder mit und es wird angezeigt%

chsh [username] kann verwendet werden, um die Einstellungen anderer Benutzer ohne erneute Verbindung zu ändern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.