Saya tidak yakin bagaimana Anda dapat menempatkan lokal Anda .zshrcke server jauh, (itu tanpa menyimpannya secara permanen di sana), ini berfungsi bagi saya untuk mengubah shell login saya di server jauh.
Karena ini adalah akun bersama, saya zshhanya dapat menggunakan untuk diri saya sendiri dengan metode ini.
Tambahkan ini ke ~/.ssh/configfile Anda di mesin lokal Anda.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Mungkin ada cara hack untuk mencapai apa yang Anda cari, seperti di bawah ini.
PERINGATAN Ini datang tanpa jaminan dan tidak terlihat 'bijaksana', namun saya berhasil meletakkan file lokal saya ke server dan sumbernya di shell login menggunakan ini.
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
Bagaimana itu bekerja?
RemoteCommand mendefinisikan apa yang perlu dijalankan di sisi jarak jauh.
LocalCommandmendefinisikan apa yang perlu dijalankan di lokal, yang digunakan untuk menyalin file lokal Anda ke server jauh untuk sumbernya. Ini dia, hanya terjadi setelah koneksi 'berhasil' ke host jarak jauh.
Berarti:
- Koneksi Anda ke jarak jauh harus terbuka dan hidup
- Shell jarak jauh Anda belum memiliki file, jadi harus menunggu sampai file ada di sana, ergo
sleep
- Penggunaan lokal Anda
sftpuntuk meletakkan file Anda ke server jauh, server jauh bangun dari sleepdan sumber skrip Anda.
Ini super hackish, saya ingin tahu apakah ada cara yang lebih baik juga.
Pembaruan: Ini dapat digunakan sebagai ganti waktu tidur 'lama':
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shellsagar shell dapat dipilih.