Yerel .zshrcsunucunuzu uzak sunucuya nasıl yerleştireceğinizden emin değilim (bu, orada kalıcı olarak depolanmayan), bu benim uzaktaki sunucudaki oturum açma kabuğumu değiştirmem için işe yarıyor.
Paylaşılan bir hesap olduğundan, zshbu yöntemle yalnızca kendim için kullanabilirim .
Bunu ~/.ssh/config, yerel makinenizdeki dosyaya ekleyin.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Aşağıdaki gibi aradığınızı başarmanın aceleci bir yolu olabilir.
UYARI Bu hiçbir garanti olmadan gelir ve 'akıllıca' görünmez, ancak yerel dosyamı sunucuya yerleştirmeyi ve bunu kullanarak giriş kabuğuna vermeyi başardım.
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
Nasıl çalışır?
RemoteCommand Uzak tarafta neyin çalıştırılması gerektiğini tanımlar.
LocalCommandYerel dosyayı çalıştırmak için yerel sunucunuzu uzak sunucuya kopyalamak için kullanılan yerelde neyin çalıştırılması gerektiğini tanımlar. İşte yakalama, sadece uzak ana bilgisayarla 'başarılı' bağlantıdan sonra olur.
Anlamı:
- Remote ile bağlantınız açık ve canlı olmalı
- Uzaktaki kabuğunuzda henüz dosya yok, bu yüzden dosya gelene kadar beklemesi gerekiyor, ergo
sleep
- Yereliniz
sftpdosyanızı uzak sunucuya koymak için kullanır , uzak sunucu uyanır sleepve komut dosyalarınızı sağlar.
Süper hackish, daha iyi bir yol olup olmadığını bilmek istiyorum.
Güncelleme: Bu 'uzun' uyku süresi yerine kullanılabilir:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shellsKabuğun seçilebilmesi için ikilinin yolunun içinde olması gerektiğini lütfen unutmayın .