Apakah ada cara untuk menentukan, di .ssh/config
, perintah seperti:
ssh -t remote-host "screen -dR screen_name"
jadi saya dapat dengan mudah mengakses screen
sesi jarak jauh dengan ssh remote-host
?
Saat ini saya memecahkan masalah ini menggunakan skrip khusus:
$ cat ~/bin/sssh
#!/bin/sh
/usr/bin/ssh -t $1 "screen -dR ab"
~/bin
tetap di pertama $PATH
, tetapi tidak fleksibel dan jelek.
Saya juga ingin mencari cara untuk mengimplementasikan pelengkapan otomatis host untuk skrip kustom saya.
$1
dengan$@
. Kemudian Anda dapat menambahkan lebih banyak opsi, bukan hanya nama host. Untuk penyelesaian, coba eksekusi. /usr/share/bash-completion/completions/ssh
, diikuti olehcomplete -F _ssh sssh
Jawaban:
Untuk mengalokasikan tty seperti yang Anda lakukan dengan
-t
opsi, masukkanRequestTTY force
sebagai entri dalam file konfigurasi ssh (biasanya dalam~/.ssh/config
). Untuk selalu menjalankan perintah di server setelah Anda terhubung, masukkanRemoteCommand COMMAND
entri, di manaCOMMAND
perintah yang ingin Anda jalankan saat koneksi. Untuk opsi lain, periksaman ssh_config
.sumber
Gunakan kekuatannya, Luke!
RequestTTY force
di Anda~/.ssh/config
untuk host yang diinginkan.sumber
Saya berpendapat bahwa ini adalah cara yang paling fleksibel. Sebuah skrip memungkinkan Anda mengatur parameter, menambahkan kondisional, mengubah perintah sesuai kebutuhan, semua berdasarkan input.
Ada beberapa cara untuk "memaksa" perintah
authorized_keys
. Tapi saya tidak tahu cara untuk memaksa alokasi tty kecuali dari baris perintah atau untuk memaksa perintah pada server jauh dari file konfigurasi sisi lokal.Saya sendiri, saya memiliki skrip yang memindai file konfigurasi, memeriksa terhadap DNS dengan berbagai domain dan mengatur string judul terminal emulator. Saya menyebutnya dari layar di sistem lokal saya ( Ctrl-a g).
sumber
Catatan:
RemoteCommand
mulai bekerja dengan OpenSSH 7.6 . Dalam versi sebelumnya (yaitu debian 9.9 saat ini) klien ssh akan berhenti bekerja dengan baik (setidaknya dengangit pull
).sumber