.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?

brngp
quelle

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
Stéphane Chazelas
quelle
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. .

slm
quelle
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
Saskia Keil
quelle
Beste Antwort ab 2019. Diese Antwort benötigt mehr Upvotes!
GeekQ
2
sudo usermod -s /bin/zsh yourusername
Sammitch
quelle
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.

Ch.Idea
quelle