.ssh / config para iniciar sesión remota en zsh

11

Me gustaría comenzar una sesión remota sin escribir el siguiente comando

ssh user@remoteserverip -t zsh

Sé que puedo cambiar los nombres de host en ~/.ssh/configsimplemente usar algo como esto:

ssh serveralias -t zsh

Pero quiero eliminar el -t zshparámetro.

¿Hay alguna manera de lograr esto sin escribir una función?

brngp
fuente

Respuestas:

6

No creo que eso sea posible con ~/.ssh/config. Se -tpuede cubrir agregando un RequestTTY yes, pero no parece que pueda especificar el comando remoto ~/.ssh/config.

Sin embargo, con zsh, podría agregar un:

alias -g 'serveralias=serveralias -t zsh'

a tu ~/.zshrc.

O hacer una función como:

zssh() ssh "$@" -t zsh
Stéphane Chazelas
fuente
¿Es eso aliasrealmente correcto? Revisa tus cotizaciones.
un CVn
Creo que iré con esta solución gracias!
brngp
5

Estoy de acuerdo con @Stephane en que no hay una manera de hacer esto usando el ~/.ssh/config file. Otro enfoque sería utilizar el ~/.ssh/authorized_keysarchivo en el servidor remoto. Si agrega una línea como esta:

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

Entonces puedes simplemente ssh como normal y obtendrás un zsh en el servidor remoto.

Ejemplo

En el servidor, ssh a remoto.

$ ssh saml@greeneggs

En el servidor remoto, confirmando que estamos en un 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

Puede hacer cosas más elaboradas usando este archivo, vea estas preguntas y respuestas, tituladas: ssh, inicie un shell específico y ejecute un comando en la máquina remota. .

slm
fuente
command="exec zsh"es una mala idea: hace que sea imposible ejecutar ssh con un comando explícito (así que adiós scp, rsync, ...). unix.stackexchange.com/a/20739 muestra cómo hacerlo decentemente.
Gilles 'SO- deja de ser malvado'
No sabía que es posible utilizar las claves autorizadas para ejecutar comandos. Es una buena idea, pero usaré la solución de Stephane porque el problema apuntado por Gilles. Gracias
brngp
@Gilles: sí, encontré su solución y acabo de mostrar el potencial aquí, no quería copiar su solución aquí, es por eso que hice referencia a la suya al final de mi respuesta.
slm
4

Para cualquiera que llegue aquí años después, desde 2017 es posible poner todo en el archivo de configuración:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh
Saskia Keil
fuente
La mejor respuesta a partir de 2019. ¡Esta respuesta necesita más votos a favor!
geekQ
2
sudo usermod -s /bin/zsh yourusername
Sammitch
fuente
0

Es mejor cambiar la configuración del shell del sistema.

  1. Conéctese al servidor normalmente. ssh serveralias
  2. Ejecutar chshpara cambiar el shell del sistema
  3. Ingrese /bin/zshpara configurarlo en zsh
  4. Vuelva a conectar con ssh serveraliasy se mostrará%

chsh [username] se puede usar para cambiar la configuración de otro usuario sin reconexión.

Ch.Idea
fuente