Jalankan perintah jarak jauh menggunakan file konfigurasi ssh

32

Saya ingin dapat mengatur perintah untuk berjalan pada ssh login ke server, tanpa perlu mengetiknya. Pada dasarnya saya mencari file konfigurasi ssh yang setara dengan:

ssh host command

jadi yang perlu saya ketik adalah:

ssh host

dan perintah dijalankan.

PeterJCLaw
sumber

Jawaban:

16

Dimungkinkan juga untuk memasukkan perintah dalam file kunci resmi Anda. ( ~/.ssh/authorized_keys). Ini memungkinkan Anda untuk menjalankan perintah khusus untuk setiap kunci dalam file. Saya menggunakan ini untuk meneruskan koneksi shell melalui firewall saya. Hasilnya adalah bahwa saya dapat ssh ke satu host dan secara otomatis menghubungkan sesi ke host di dalam jaringan. The authorized_keysentri terlihat seperti ini:

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

Lebih khusus pengalihan adalah untuk contoh gitolite saya. Ini memungkinkan akses luar yang sederhana tanpa secara langsung mengekspos host gitolite ke akses eksternal apa pun. Periksa halaman manual untuk info lebih lanjut. ( http://linux.die.net/man/8/sshd )

dav
sumber
1
Ini luar biasa, tidak tahu Anda bisa melakukan ini. +1
Brian Wigginton
3
Jika Anda memasukkan perintah ke file otor_keys Anda, itu akan merusak hal-hal seperti rsync dan scp - Anda akan mendapatkan sesuatu seperti ini: terminal terbuka gagal: bukan terminal. Perlu diketahui juga bahwa jika perintah gagal Anda tidak akan bisa masuk. Saya telah menemukan ini dengan cara yang sulit.
John Hunt
11

Jika Anda menjalankan OpenSSH, sepertinya ~/.ssh/rcini dieksekusi setelah login .

pemain coneslayer
sumber
3
Apakah /.ssh/rcterletak di mesin klien atau server? Sepertinya dari dokumen server, kan?
heavyd
1
Ya, itu akan ada di mesin server.
pemain coneslayer
Sayangnya rcfile tersebut tampaknya gagal menjalankan hal-hal seperti screen, mendapat kesalahan "Harus terhubung ke terminal"
davidparks21
10

Anda dapat mengatur alias bash.

Dalam file .bashrc Anda, masukkan:

alias ssl='ssh some_host run_command'

Maka Anda bahkan tidak perlu mengetikkan nama host.

Atau, jika Anda ingin melakukan ini dengan beberapa host (dan beberapa alias tidak berfungsi), maka gunakan skrip kecil:

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$
Kevin M.
sumber
2

Anda dinginkan ini di Anda .ssh/config file, untuk host di mana Anda ingin menjalankan perintah, tambahkan

  RequestTTY yes
  RemoteCommand <some command>

dimana <some command>perintahmu Ini juga berfungsi dengan layar atau tmux.

Florian Lautenschlager
sumber