Je ne suis pas sûr que vous puissiez mettre votre local .zshrc
sur le serveur distant, (c'est à dire sans l'y stocker de façon permanente), cela fonctionne pour moi pour changer mon login Shell sur le serveur distant.
Puisque c'est un compte partagé, je peux utiliser zsh
seulement pour moi avec cette méthode.
Ajoutez ceci à votre ~/.ssh/config
dans votre machine locale.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Il existe peut-être des moyens détournés d'accomplir ce que vous cherchez, comme ci-dessous.
AVERTISSEMENT Cela n'apporte aucune garantie et ne semble pas "sage", cependant j'ai réussi à mettre mon fichier local sur le serveur et à le sourcer dans le login Shell en utilisant ceci.
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
Comment cela fonctionne-t-il ?
-
RemoteCommand
définit ce qui doit être exécuté du côté distant.
-
LocalCommand
définit ce qui doit être exécuté sur le serveur local, qui est utilisé pour copier votre fichier local sur le serveur distant pour le sourcer. Le problème, c'est que cela ne se produit qu'après une connexion "réussie" avec l'hôte distant.
C'est-à-dire :
- Votre connexion à distance doit être ouverte et vivante
- Votre Shell distant n'a pas encore le fichier, donc il doit attendre jusqu'à ce que le fichier soit là, ergo
sleep
- Vos utilisations locales
sftp
pour mettre votre fichier sur le serveur distant, le serveur distant se réveille à partir de sleep
et source vos scripts.
C'est super hackish, j'aimerais savoir s'il existe une meilleure méthode.
Mise à jour : Ceci peut être utilisé à la place du temps de sommeil "long" :
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'