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.

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 )


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


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:~$

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.

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.