No estoy seguro de cómo puede poner su .zshrc
servidor 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, zsh
solo puedo usarla para mí con este método.
Agregue esto a su ~/.ssh/config
archivo en su máquina local.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
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.
Host someHost
HostName someIP
IdentityFile ~/.ssh/somekey.pem
RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
PermitLocalCommand yes
LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
RequestTTY force
User someUser
¿Cómo funciona?
RemoteCommand
define lo que debe ejecutarse en el lado remoto.
LocalCommand
define 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:
- Su conexión al control remoto debe estar abierta y viva
- Su shell remoto aún no tiene el archivo, por lo que debe esperar hasta que el archivo esté allí, ergo
sleep
- Sus usos locales
sftp
para poner su archivo en un servidor remoto, el servidor remoto se activa sleep
y 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'
/etc/shells
para que el shell sea seleccionable.