Non sono sicuro di come puoi mettere il tuo locale .zshrc
sul server remoto, (cioè senza memorizzarlo permanentemente lì), questo funziona per me per cambiare la mia shell di accesso sul server remoto.
Dal momento che è un account condiviso, posso usare zsh
solo per me stesso con questo metodo.
Aggiungi questo al tuo ~/.ssh/config
file nel tuo computer locale.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Potrebbe esserci un modo hacker per realizzare ciò che stai cercando, come di seguito.
ATTENZIONE Questo non ha garanzie e non sembra "saggio", tuttavia sono riuscito a mettere il mio file locale sul server e a utilizzarlo nella shell di login usando questo.
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
Come funziona?
RemoteCommand
definisce ciò che deve essere eseguito sul lato remoto.
LocalCommand
definisce ciò che deve essere eseguito su local, che viene utilizzato per copiare il file locale sul server remoto per acquistarlo. Ecco il problema, succede solo dopo una connessione "riuscita" all'host remoto.
Significato:
- La tua connessione al telecomando dovrebbe essere aperta e attiva
- La tua shell remota non ha ancora il file, quindi deve aspettare che il file sia lì, ergo
sleep
- Il tuo locale usa
sftp
per mettere il tuo file sul server remoto, il server remoto si risveglia sleep
e genera i tuoi script.
È super hacker, mi piacerebbe sapere se esiste anche un modo migliore.
Aggiornamento: può essere utilizzato al posto del tempo di sospensione "lungo":
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shells
affinché la shell sia selezionabile.