SSHd'yi kullanıcıya tam oturum açma erişimi vermeden tek bir komuta izin verecek şekilde nasıl yapılandırabilirim?


11

SSH üzerinden uzaktan komut çağırmanın en iyi yolunu arıyorum. Kullanıcı 'rpcall' oluşturuyorum, yeni sertifika oluşturuyorum ve yetkili_anahtarları dolduruyorum. İle biraz daha güvenli hale getirin

from="ip",no-agent-forwarding,no-X11-forwarding,no-port-forwarding,no-pty ssh-rsa ......

şimdi rpcall kullanıcısı terminale giriş yapamıyor

ssh -l rpc 192.168.12.1
PTY allocation request failed on channel 0

ancak herhangi bir komutu çalıştırmak mümkündür

ssh -l rpc 192.168.12.1 cat /etc/passwd

Komut yürütmeyi yalnızca bir işleme komut dosyasıyla sınırlandırabileceğim herhangi bir çözüm var mı? Örneğin /home/rpcall/bin/command.sh

Ben bu kullanıcı için bash kabuk kurdu ve .bashrc force run işleme komut dosyası kullanarak, ama ssh çağrı parametreleri geçmek nasıl bilmiyorum.

rpcall kullanıcısı için .bashrc

/home/rpcall/bin/command.sh $params1 $params2
exit

diğer makineden ssh çağrısı

ssh -l rpcall 192.168.12.1 "param1" "param2"

Yanıtlar:


19

Authority_keys dosyasını kullanarak komutları kısıtlayabilirsiniz. command="/home/rpcall/bin/command.sh"Anahtardan önce, yetkili_anahtarlar dosyasına koyun ve kullanıcı bu komutu yalnızca bağlandıklarında çalıştıracaktır.

Man_ sayfasında yetkili_anahtarlar olup olmadığını kontrol edin, bu o man sayfasından,

 command="command"
         Specifies that the command is executed whenever this key is used
         for authentication.  The command supplied by the user (if any) is
         ignored.  The command is run on a pty if the client requests a
         pty; otherwise it is run without a tty.  If an 8-bit clean chan-
         nel is required, one must not request a pty or should specify
         no-pty.  A quote may be included in the command by quoting it
         with a backslash.  This option might be useful to restrict cer-
         tain public keys to perform just a specific operation.  An exam-
         ple might be a key that permits remote backups but nothing else.
         Note that the client may specify TCP and/or X11 forwarding unless
         they are explicitly prohibited.  The command originally supplied
         by the client is available in the SSH_ORIGINAL_COMMAND environ-
         ment variable.  Note that this option applies to shell, command
         or subsystem execution.

Birden fazla komuta ihtiyacınız varsa, temel olarak birkaç anahtar seti ayarlamanız ve size farklı komutlar vermek için farklı anahtarlar kullanmanız gerekir.

Düzenleme: Sadece fark ettim, orijinal komut SSH_ORIGINAL_COMMANDortam değişkeninde kullanılabilir, bu yüzden gerçekten akıllı bir şey yaparak, kendi komut dosyası kullanarak bu girdiyi işleyebilir.


4
Belirtilen komut parametrelere SSH_ORIGINAL_COMMANDortam değişkeni üzerinden erişebilir . Bu şekilde parametreler bu komuta iletilebilir, sadece bu ortam değişkenini ayrıştırması ve istenen işi yapması gerekir.
Oliver

Evet, birkaç dakika önce bunu da fark ettiğimde cevabı güncelledim.
EightBitTony

Komut seçeneği ve SSH_ORIGINAL_COMMAND ile tam olarak ihtiyacım olan mükemmel çözüm. Teşekkür ederim EightBitTony ve Oliver!
andrew
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.