Bagaimana cara mengatur shell yang digunakan saat pengguna SSH ke server. Misalnya saya tidak tahan BASH dan perlu menggunakan ZSH, bagaimana saya membuatnya jadi ZSH dimuat bersama dengan profil saya ( .zsh_profile
) ketika saya ssh ke mesin.
Saya tidak ingin harus melewati banyak parameter dengan ssh, tidak bisakah saya mengatur shell default?
/etc/shells
agar shell dapat dipilih.passwd
paket .man chsh
perubahan shell, tidak selalu berhasilAtau, Anda bisa tetap
exec /bin/zsh
menggunakan skrip login bash Anda. Ini akan menggantikan instance bash dengan shell Anda.Atau Anda bisa melakukannya
ssh host "zsh -l"
sumber
L
ssh -t
diperlukan untuk mendapatkan TTY untuk opsi terakhir. Secara default jika perintah (sepertizsh -l
) disediakan, OpenSSH akan melakukan shell non-login, yang tidak akan mengalokasikan TTY untuk Anda, dan-l
tidak akan mengubahnya (karena itu dijalankan setelah login).Edit / etc / passwd (jika Anda memiliki hak, atau minta admin sistem Anda) untuk mengubah shell default Anda.
sumber
Jika Anda tidak dapat mengubah shell default Anda,
ssh -t user@host 'zsh -l'
berfungsi.The
-t
bendera memaksa alokasi pseudo-tty, dan-l
menumbuhkan bendera shell login .sumber
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.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.
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:
sleep
sftp
untuk meletakkan file Anda ke server jauh, server jauh bangun darisleep
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'
sumber