Як налаштувати SSHd, щоб дозволити одну команду, не надаючи користувачеві повного доступу для входу?


11

Я шукаю найкращий спосіб зателефонувати на віддалену команду через SSH. Я створюю "rpcall" користувача, генерую новий сертифікат і заповнюю дозволені_кейди. Забезпечте це трохи більше

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

тепер користувач rpcall не може увійти до терміналу

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

але можна запустити будь-яку команду

ssh -l rpc 192.168.12.1 cat /etc/passwd

Чи є якесь рішення, я можу обмежити виконання команд лише одним сценарієм обробки? Наприклад /home/rpcall/bin/command.sh

Я налаштував bash shell для цього користувача та використовував сценарій обробки примусового запуску .bashrc, але я не знаю, як передавати параметри від ssh call.

.bashrc для користувача rpcall

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

ssh-дзвінок з іншої машини

ssh -l rpcall 192.168.12.1 "param1" "param2"

Відповіді:


19

Ви можете обмежити команди, використовуючи файл санкціонованих_кілей. Поставте command="/home/rpcall/bin/command.sh"перед ключем у файл санкціонованих_кейлів, і користувач буде виконувати цю команду лише тоді, коли він підключиться.

Перевірте чоловічу сторінку на авторизовані_кільки, це з цієї довідкової сторінки,

 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.

Якщо вам потрібно більше однієї команди, вам потрібно в основному встановити кілька наборів ключів і використовувати різні клавіші, щоб дати вам різні команди.

Редагувати: Я щойно помітив, оригінальна команда доступна в SSH_ORIGINAL_COMMANDзмінній оточуючого середовища, тому ви справді могли б обробляти цей вхід, використовуючи власний сценарій, роблячи щось розумне.


4
Зазначена команда здатна отримати доступ до параметрів через SSH_ORIGINAL_COMMANDзмінну середовища. Таким чином параметри можуть бути передані цій команді, вона просто повинна проаналізувати цю змінну середовища і виконати запитувану роботу.
Олівер

Так, я оновив відповідь кілька хвилин тому, коли я також помітив це.
EightBitTony

Ідеальне рішення з опцією команди та SSH_ORIGINAL_COMMAND, саме те, що мені потрібно. Дякую вам EightBitTony та Oliver!
andrew
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.