Saya ingin memulai sesi jarak jauh tanpa mengetik perintah berikut
ssh user@remoteserverip -t zsh
Saya tahu bahwa saya dapat mengubah nama host di ~/.ssh/config
hanya menggunakan sesuatu seperti ini:
ssh serveralias -t zsh
Tapi saya ingin menghapus -t zsh
parameter.
Apakah ada cara untuk mencapai ini tanpa menulis fungsi?
Jawaban:
Saya pikir itu tidak mungkin
~/.ssh/config
. The-t
dapat ditutupi dengan menambahkanRequestTTY yes
, tetapi tampaknya tidak Anda dapat menentukan perintah terpencil di~/.ssh/config
.Namun, dengan
zsh
, Anda dapat menambahkan:untuk Anda
~/.zshrc
.Atau buat fungsi seperti:
sumber
alias
benar? Periksa kutipan Anda.Saya setuju dengan @Stephane bahwa tidak ada cara untuk melakukan ini menggunakan
~/.ssh/config file
. Pendekatan lain adalah menggunakan~/.ssh/authorized_keys
file di server jauh. Jika Anda menambahkan baris seperti ini:Kemudian Anda bisa ssh seperti biasa dan Anda akan mendapatkan zsh di server jauh.
Contoh
Di server, ssh ke jarak jauh.
Di server jarak jauh, konfirmasikan kami berada di
zsh
.Anda dapat melakukan lebih banyak hal rumit menggunakan file ini, lihat Tanya Jawab ini, berjudul: ssh, mulai shell tertentu, dan jalankan perintah pada mesin jarak jauh? .
sumber
command="exec zsh"
adalah ide yang buruk: membuatnya mustahil untuk menjalankan ssh dengan perintah eksplisit (jadi selamat tinggal scp, rsync, ...). unix.stackexchange.com/a/20739 menunjukkan cara melakukan ini dengan sopan.Bagi siapa pun yang tiba di sini bertahun-tahun kemudian, sejak 2017 dimungkinkan untuk meletakkan semuanya di file konfigurasi:
sumber
sumber
Anda lebih baik mengubah pengaturan shell sistem.
ssh serveralias
chsh
untuk mengubah shell sistem/bin/zsh
untuk mengaturnya ke zshssh serveralias
dan itu akan ditampilkan%
chsh [username]
dapat digunakan untuk mengubah pengaturan pengguna lain tanpa menghubungkan kembali.sumber