¿Cómo configuro el shell que se utiliza cuando un usuario SSH en un servidor? Por ejemplo, no soporto BASH y necesito usar ZSH, ¿cómo lo hago para que ZSH se cargue junto con mi perfil ( .zsh_profile) cuando ssh a la máquina.
No quiero tener que pasar un montón de parámetros con ssh tampoco, ¿no puedo configurar el shell predeterminado?

/etc/shellspara que el shell sea seleccionable.passwdpaquete .man chshcambia de caparazón, no siempre funcionaAlternativamente, puede pegar
exec /bin/zshen su script de inicio de sesión bash. Esto reemplazará la instancia bash con su shell.O puedes hacer
ssh host "zsh -l"fuente
Lssh -tse requiere para obtener un TTY para las últimas opciones. Por defecto, si se proporciona un comando (comozsh -l), OpenSSH haría un shell sin inicio de sesión, que no le asignaría TTY, y-lno lo cambiará (porque se ejecuta después de iniciar sesión).Edite / etc / passwd (si tiene los derechos o solicite al administrador del sistema) que cambie su shell predeterminado.
fuente
Si no puede cambiar su shell predeterminado,
ssh -t user@host 'zsh -l'funciona.La
-tbandera fuerza una asignación pseudo-tty, y la-lbandera genera un shell de inicio de sesión .fuente
No estoy seguro de cómo puede poner su
.zshrcservidor local a remoto (sin almacenarlo permanentemente allí), esto funciona para mí para cambiar mi shell de inicio de sesión en el servidor remoto.Como es una cuenta compartida,
zshsolo puedo usarla para mí con este método.Agregue esto a su
~/.ssh/configarchivo en su máquina local.Podría haber una forma hack de lograr lo que está buscando, como a continuación.
ADVERTENCIA Esto viene sin garantías y no parece 'sabio', sin embargo logré poner mi archivo local en el servidor y usarlo en el shell de inicio de sesión.
¿Cómo funciona?
RemoteCommanddefine lo que debe ejecutarse en el lado remoto.LocalCommanddefine lo que debe ejecutarse en local, que se utiliza para copiar su archivo local en un servidor remoto para obtenerlo. Aquí está el truco, ocurre solo después de una conexión 'exitosa' al host remoto.Sentido:
sleepsftppara poner su archivo en un servidor remoto, el servidor remoto se activasleepy obtiene sus scripts.Es súper hack, me gustaría saber si hay una mejor manera también.
Actualización: Esto se puede usar en lugar del tiempo de sueño "largo":
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'fuente