.ssh / config cara untuk menentukan alokasi pseudo-tty dan eksekusi perintah


13

Apakah ada cara untuk menentukan, di .ssh/config, perintah seperti:

ssh -t remote-host "screen -dR screen_name"

jadi saya dapat dengan mudah mengakses screensesi 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"

~/bintetap di pertama $PATH, tetapi tidak fleksibel dan jelek.

Saya juga ingin mencari cara untuk mengimplementasikan pelengkapan otomatis host untuk skrip kustom saya.


Saya akan ganti $1dengan $@. 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
Alex Stragies

Jawaban:


17

Untuk mengalokasikan tty seperti yang Anda lakukan dengan -topsi, masukkan RequestTTY forcesebagai entri dalam file konfigurasi ssh (biasanya dalam ~/.ssh/config). Untuk selalu menjalankan perintah di server setelah Anda terhubung, masukkan RemoteCommand COMMANDentri, di mana COMMANDperintah yang ingin Anda jalankan saat koneksi. Untuk opsi lain, periksa man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name

7

Gunakan kekuatannya, Luke!

RequestTTY forcedi Anda ~/.ssh/configuntuk host yang diinginkan.


1

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


0

Catatan: RemoteCommandmulai bekerja dengan OpenSSH 7.6 . Dalam versi sebelumnya (yaitu debian 9.9 saat ini) klien ssh akan berhenti bekerja dengan baik (setidaknya dengan git pull).

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.