Я ищу лучший способ вызвать удаленную команду через SSH. Я создаю пользователя rpcall, создаю новый сертификат и заполняю authorized_keys. Защитите это немного больше с
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 для этого пользователя и использовал сценарий обработки принудительного запуска .bashrc, но я не знаю, как передавать параметры из вызова ssh.
.bashrc для пользователя rpcall
/home/rpcall/bin/command.sh $params1 $params2
exit
ssh-вызов с другой машины
ssh -l rpcall 192.168.12.1 "param1" "param2"
Вы можете ограничить команды, используя файл authorized_keys. Ставить command="/home/rpcall/bin/command.sh"
перед ключом в файле authorized_keys, и пользователь будет запускать эту команду только при подключении.
Проверьте страницу руководства для authorized_keys, это с этой страницы руководства,
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
переменная окружения, так что вы действительно можете обрабатывать этот ввод, используя свой собственный скрипт, делая что-то умное.