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


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

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


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

Jawaban terbaik pada 2019. Jawaban ini membutuhkan lebih banyak suara positif!
geekQ


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.