Вы можете иметь только одну команду для каждой клавиши, потому что команда «принудительная».
Но вы можете использовать скрипт-обертку. Вызываемая команда получает исходную командную строку в качестве переменной среды $SSH_ORIGINAL_COMMAND
, которую она может оценить.
Например, положить это в ~/.ssh/allowed-commands.sh
:
#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
case "$SSH_ORIGINAL_COMMAND" in
"systemctl restart cups")
systemctl restart cups
;;
"shutdown -r now")
shutdown -r now
;;
*)
echo "Access denied"
exit 1
;;
esac
Затем сослаться на это ~/.ssh/authorized_keys
с
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(perman sshd
), чтобы он был доступен в скриптах. Также приведем пример для автоматизированных сценариев, которые позволяют запускать определенные шаблоныSSH_ORIGINAL_COMMAND
. См. Также unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlВ великолепном SSH, книге «Безопасная оболочка: полное руководство » О'Рейли, в восьмой главе, есть хороший пример, приведенный с использованием сценария, подобного следующему:
Используя это в вашем
.authorized_keys
файле, как:... дает вам это при выполнении
ssh
:источник
scp
,sftp
и все остальное, что вы можете найти полезным когда-нибудь.command
варианта в целом?Другие подходы используют, например, ограниченную оболочку для данного пользователя, или используют оболочку, которая ограничивает команды для всех файлов / сценариев, найденных в определенном каталоге, что позволяет расширять список команд без изменения оболочки.
В другой статье описывается универсальный сценарий, который также разрешает аргументы командной строки разрешенным командам, но позволяет заблокировать их с помощью правил, выражаемых в виде регулярных выражений.
Этот пример будет выражен следующим образом:
И
.onlyrules
файлы будут созданы с этим содержанием:Преимущество этого «единственного» подхода заключается в том, что нет необходимости писать отдельные сценарии для каждого пользователя и ситуации.
источник
ForcedCommand