.ssh / config untuk memulai sesi jarak jauh di zsh

11

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/confighanya menggunakan sesuatu seperti ini:

ssh serveralias -t zsh

Tapi saya ingin menghapus -t zshparameter.

Apakah ada cara untuk mencapai ini tanpa menulis fungsi?

brngp
sumber

Jawaban:

6

Saya pikir itu tidak mungkin ~/.ssh/config. The -tdapat ditutupi dengan menambahkan RequestTTY yes, tetapi tampaknya tidak Anda dapat menentukan perintah terpencil di ~/.ssh/config.

Namun, dengan zsh, Anda dapat menambahkan:

alias -g 'serveralias=serveralias -t zsh'

untuk Anda ~/.zshrc.

Atau buat fungsi seperti:

zssh() ssh "$@" -t zsh
Stéphane Chazelas
sumber
Benarkah itu aliasbenar? Periksa kutipan Anda.
CVn
Saya pikir saya akan pergi dengan solusi ini, terima kasih!
brngp
5

Saya setuju dengan @Stephane bahwa tidak ada cara untuk melakukan ini menggunakan ~/.ssh/config file. Pendekatan lain adalah menggunakan ~/.ssh/authorized_keysfile di server jauh. Jika Anda menambahkan baris seperti ini:

command="exec zsh" ssh-dss ..... rest of key ....

Kemudian Anda bisa ssh seperti biasa dan Anda akan mendapatkan zsh di server jauh.

Contoh

Di server, ssh ke jarak jauh.

$ ssh saml@greeneggs

Di server jarak jauh, konfirmasikan kami berada di zsh.

[saml@greeneggs]~% ps -eaf|grep $$
saml      1974  1973  1 10:34 pts/3    00:00:00 zsh
saml      2023  1974  0 10:34 pts/3    00:00:00 ps -eaf
saml      2024  1974  0 10:34 pts/3    00:00:00 grep --color=auto 1974

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? .

slm
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.
Gilles 'SANGAT berhenti menjadi jahat'
Saya tidak menyadari bahwa mungkin untuk menggunakan otor_keys untuk menjalankan perintah. itu adalah ide yang cukup bagus, tetapi saya akan menggunakan solusi dari stephane karena masalah tersebut ditunjukkan oleh Gilles. Terima kasih
brngp
@Gilles - ya saya menemukan solusi Anda dan hanya menunjukkan potensi di sini, tidak ingin hanya menyalin solusi Anda di sini, itu sebabnya saya mereferensikan milik Anda di bagian bawah jawaban saya.
slm
4

Bagi siapa pun yang tiba di sini bertahun-tahun kemudian, sejak 2017 dimungkinkan untuk meletakkan semuanya di file konfigurasi:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh
Saskia Keil
sumber
Jawaban terbaik pada 2019. Jawaban ini membutuhkan lebih banyak suara positif!
geekQ
2
sudo usermod -s /bin/zsh yourusername
Sammitch
sumber
0

Anda lebih baik mengubah pengaturan shell sistem.

  1. Terhubung ke server secara normal. ssh serveralias
  2. Jalankan chshuntuk mengubah shell sistem
  3. Masukkan /bin/zshuntuk mengaturnya ke zsh
  4. Hubungkan kembali dengan ssh serveraliasdan itu akan ditampilkan%

chsh [username] dapat digunakan untuk mengubah pengaturan pengguna lain tanpa menghubungkan kembali.

Ch.Idea
sumber