.ssh / config per avviare la sessione remota in zsh


11

Vorrei iniziare una sessione remota senza digitare il seguente comando

ssh user@remoteserverip -t zsh

So che posso cambiare i nomi degli host in ~/.ssh/configper usare semplicemente qualcosa del genere:

ssh serveralias -t zsh

Ma voglio rimuovere il -t zshparametro.

C'è un modo per raggiungere questo obiettivo senza scrivere una funzione?


Risposte:


6

Non penso che sia possibile con ~/.ssh/config. L' -targomento può essere coperto aggiungendo un RequestTTY yes, ma non sembra che tu possa specificare il comando remoto in ~/.ssh/config.

Tuttavia, con zsh, è possibile aggiungere un:

alias -g 'serveralias=serveralias -t zsh'

al tuo ~/.zshrc.

O fai una funzione come:

zssh() ssh "$@" -t zsh

È aliasdavvero corretto? Controlla i tuoi preventivi.
un CVn il

Penso che andrò con questa soluzione grazie!
brngp,

5

Concordo con @Stephane che non esiste un modo per farlo utilizzando ~/.ssh/config file. Un altro approccio sarebbe quello di utilizzare il ~/.ssh/authorized_keysfile sul server remoto. Se aggiungi una riga come questa:

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

Quindi puoi semplicemente ssh come al solito e otterrai un zsh sul server remoto.

Esempio

Sul server, SSH al remoto.

$ ssh saml@greeneggs

Sul server remoto, confermando che siamo in a 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

Puoi fare cose più elaborate usando questo file, vedi questo D&R, intitolato: ssh, avvia una shell specifica ed esegui un comando sul computer remoto? .


command="exec zsh"è una cattiva idea: rende impossibile eseguire ssh con un comando esplicito (quindi arrivederci scp, rsync, ...). unix.stackexchange.com/a/20739 mostra come farlo decentemente.
Gilles 'SO- smetti di essere malvagio' il

Non ero a conoscenza del fatto che è possibile utilizzare il tipo di chiave autorizzata per eseguire i comandi. è una bella idea, ma userò la soluzione di Stephane perché il problema è stato segnalato da Gilles. Grazie
brngp,

@Gilles - sì, ho trovato la tua soluzione e ho appena mostrato il potenziale qui, non volevo solo copiare la tua soluzione qui, ecco perché ho fatto riferimento alla tua in fondo alla mia risposta.
slm

4

Per chi arriva qui anni dopo, dal 2017 è possibile inserire tutto nel file di configurazione:

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

Migliore risposta a partire dal 2019. Questa risposta richiede più voti!
geekQ,


0

È meglio modificare l'impostazione della shell di sistema.

  1. Connettersi al server normalmente. ssh serveralias
  2. Eseguire chshper modificare la shell di sistema
  3. Invio /bin/zshper impostarlo su zsh
  4. Riconnettiti con ssh serveraliase mostrerà%

chsh [username] può essere utilizzato per modificare le impostazioni di altri utenti senza ricollegarsi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.