Ich bin nicht sicher, wie Sie Ihren lokalen .zshrcServer auf einen Remote-Server übertragen können (ohne ihn dauerhaft dort zu speichern). Dies funktioniert für mich, wenn ich meine Anmeldeshell auf einem Remote-Server ändere.
Da es sich um ein freigegebenes Konto handelt, kann zshich es mit dieser Methode nur für mich selbst verwenden.
Fügen Sie dies zu Ihrer ~/.ssh/configDatei auf Ihrem lokalen Computer hinzu.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Es könnte einen hackigen Weg geben, um das zu erreichen, wonach Sie suchen, wie unten.
WARNUNG Dies kommt ohne Garantie und sieht nicht "klug" aus, aber ich habe es geschafft, meine lokale Datei auf den Server zu stellen und sie mit dieser in der Anmeldeshell zu speichern.
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
Wie es funktioniert?
RemoteCommand Definiert, was auf der Remote-Seite ausgeführt werden muss.
LocalCommandDefiniert, was lokal ausgeführt werden muss. Mit dieser Option wird Ihre lokale Datei auf den Remote-Server kopiert, um sie zu beziehen. Hier ist der Haken, es passiert erst nach "erfolgreicher" Verbindung zum Remote-Host.
Bedeutung:
- Ihre Verbindung zu Remote sollte offen und aktiv sein
- Ihre Remote-Shell hat die Datei noch nicht, daher muss sie warten, bis die Datei da ist, ergo
sleep
- Ihre lokale Verwendung
sftp, um Ihre Datei auf einem Remote-Server abzulegen, der Remote-Server wird von sleepIhren Skripten aktiviert und gibt einen Quellcode aus.
Es ist super hackisch, ich würde gerne wissen, ob es auch einen besseren Weg gibt.
Update: Dies kann anstelle von "langer" Ruhezeit verwendet werden:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shellsdie Shell ausgewählt werden kann.