.ssh / config para iniciar a sessão remota no zsh

11

Gostaria de iniciar uma sessão remota sem digitar o seguinte comando

ssh user@remoteserverip -t zsh

Eu sei que posso alterar os nomes de host no ~/.ssh/configpara simplesmente usar algo como isto:

ssh serveralias -t zsh

Mas eu quero remover o -t zshparâmetro

Existe uma maneira de conseguir isso sem escrever uma função?

brngp
fonte

Respostas:

6

Eu não acho que isso é possível com ~/.ssh/config. O -tpode ser coberto pela adição de um RequestTTY yes, mas não parece que você pode especificar o comando remoto ~/.ssh/config.

No entanto, com zsh, você pode adicionar um:

alias -g 'serveralias=serveralias -t zsh'

para o seu ~/.zshrc.

Ou crie uma função como:

zssh() ssh "$@" -t zsh
Stéphane Chazelas
fonte
Isso está aliasrealmente correto? Verifique suas cotações.
precisa saber é o seguinte
Acho que vou com esta solução obrigado!
Brgp 26/09
5

Concordo com @Stephane que não há uma maneira de fazer isso usando o ~/.ssh/config file. Outra abordagem seria usar o ~/.ssh/authorized_keysarquivo no servidor remoto. Se você adicionar uma linha como esta:

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

Então você pode simplesmente fazer o ssh normalmente e obter um zsh no servidor remoto.

Exemplo

No servidor, ssh para remoto.

$ ssh saml@greeneggs

No servidor remoto, confirmando que estamos em um servidor 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

Você pode fazer coisas mais elaboradas usando esse arquivo, consulte estas perguntas e respostas, intituladas: ssh, inicie um shell específico e execute um comando na máquina remota? .

slm
fonte
command="exec zsh"é uma péssima idéia: torna impossível executar ssh com um comando explícito (então adeus scp, rsync,…). unix.stackexchange.com/a/20739 mostra como fazer isso decentemente.
Gilles 'SO- stop be evil'
Eu não sabia que é possível usar as teclas_estabelecidas para executar comandos. é uma boa idéia, mas usarei a solução da stephane porque o problema apontado por Gilles. Graças
brngp
@ Gilles - sim, encontrei sua solução e mostrei o potencial aqui, não queria apenas copiar sua solução aqui, é por isso que referenciei a sua na parte inferior da minha resposta.
slm
4

Para quem chega aqui anos depois, desde 2017 é possível colocar tudo no arquivo de configuração:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh
Saskia Keil
fonte
Melhor resposta a partir de 2019. Essa resposta precisa de mais votos!
geekQ
2
sudo usermod -s /bin/zsh yourusername
Sammitch
fonte
0

É melhor você alterar a configuração do shell do sistema.

  1. Conecte-se ao servidor normalmente. ssh serveralias
  2. Executar chshpara alterar o shell do sistema
  3. Enter /bin/zshpara configurá-lo como zsh
  4. Reconecte-se com ssh serveraliase ele mostrará%

chsh [username] pode ser usado para alterar a configuração de outro usuário sem se reconectar.

Ch.Idea
fonte