Yerel .zshrc
sunucunuzu 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, zsh
bu 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.
LocalCommand
Yerel 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
sftp
dosyanızı uzak sunucuya koymak için kullanır , uzak sunucu uyanır sleep
ve 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/shells
Kabuğun seçilebilmesi için ikilinin yolunun içinde olması gerektiğini lütfen unutmayın .