Ssh config dosyasını kullanarak uzak bir komut çalıştırın.


32

Bir sunucuya ssh girişinde çalıştırmak için bir komut yazmak gerekmeden, yazmaya gerek kalmadan çalışmak istiyorum. Temelde ssh config dosyası eşdeğerini arıyorum:

ssh host command

Böylece yazmam gereken tek şey:

ssh host

ve komut çalıştırılır.

Yanıtlar:


16

Yetkili anahtar dosyanızda bir komut eklemek de mümkündür. ( ~/.ssh/authorized_keys). Bu, dosyadaki her anahtar için özel bir komut çalıştırmanıza izin verir. Bunu güvenlik duvarımdaki kabuk bağlantılarını iletmek için kullanıyorum. Sonuç olarak, bir ana bilgisayara ssh yapabiliyorum ve oturumu otomatik olarak ağ içindeki bir ana bilgisayara bağlıyor. authorized_keysGiriş şöyle görünür:

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

Daha spesifik olarak yönlendirme benim gitolit örneğim içindir. Bu, gitolit konağı doğrudan herhangi bir harici erişime maruz bırakmadan basit dış erişim sağlar. Daha fazla bilgi için man sayfasını kontrol edin. ( http://linux.die.net/man/8/sshd )


1
Bu harika, bunu yapabileceğini bilmiyordum. +1
Brian Wigginton 24:13

3
Komutu certified_keys dosyanıza koyarsanız, rsync ve scp gibi şeyleri kırarsınız - şuna benzer bir şey alırsınız: açık terminal başarısız: terminal değil. Ayrıca, komut başarısız olursa giriş yapamayacağınızı unutmayın. Bunu zor yoldan keşfettim.
John Hunt

11

Eğer OpenSSH çalıştırıyorsanız, benzediğini ~/.ssh/rcedilir giriş üzerine yürütülen .


3
Is /.ssh/rcistemci veya sunucu makinesinde bulunan? Dokümanlardan sunucuya benziyor, değil mi?
heavyd

1
Evet, bu sunucu makinesinde olurdu.
katil

Ne yazık ki rcdosya gibi screenbir şey çalıştırmak için başarısız gibi görünüyor , "Bir terminale bağlı olmalı" hata almak
davidparks21

10

Bir bash takma adı ayarlayabilirsiniz.

.Bashrc dosyanıza şunu koyun:

alias ssl='ssh some_host run_command'

O zaman ana bilgisayar adını bile yazmanız gerekmez.

Veya, bunu birden çok ana bilgisayarla yapmak istiyorsanız (ve birden çok diğer ad işe yaramazsa), küçük bir komut dosyası kullanın:

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

2

Bunu, sizin .ssh/config filekomutunuzda, bir komut yürütmek istediğiniz ana bilgisayar için çözüyorsunuz, ekleyin.

  RequestTTY yes
  RemoteCommand <some command>

emrin nerede <some command>? Bu aynı zamanda ekran veya tmux ile çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.