Saya tidak yakin bagaimana Anda dapat menempatkan lokal Anda .zshrc
ke 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 zsh
hanya dapat menggunakan untuk diri saya sendiri dengan metode ini.
Tambahkan ini ke ~/.ssh/config
file 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.
LocalCommand
mendefinisikan 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
sftp
untuk meletakkan file Anda ke server jauh, server jauh bangun dari sleep
dan 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/shells
agar shell dapat dipilih.