Я хочу ограничить используемые ключи, sshfs
чтобы гарантировать, что только sshfs
процесс сможет использовать этот ключ, т. е. он будет ограничен командами, sshfs
используемыми для записи и сохранения файлов, а также для просмотра каталогов.
Какие еще опции мне следует добавить в дополнение к опциям no-port-forwarding,no-x11-forwarding,no-agent-forwarding,no-pty
(которые, как я предполагаю, не повлияют на ситуацию)?
Я думаю, в частности, об command=
опции и о том sftp
, какие scp
опции в нее следует включить.
решение1
Для меня это работает:
command="/usr/lib/ssh/sftp-server"
(Вы можете узнать это самостоятельно, посмотрев список процессов на сервере ssh)
Еще лучше, если вы укажете command
на скрипт оболочки, который проверяет, использовал ли клиент правильную команду. Например, так (упрощенно, не проверено):
#!/bin/sh
# We get SSH_ORIGINAL_COMMAND from sshd
# comment out for production!
echo "debug original command: $SSH_ORIGINAL_COMMAND" >&2
if [ "$SSH_ORIGINAL_COMMAND" != "/usr/lib/ssh/sftp-server" ]; then
echo "access denied" >&2
exit 1
fi
exec /usr/lib/ssh/sftp-server
Такой скрипт также позволит проверить допустимые аргументы для sftp-сервера. Похожая идея, как и для известного rrsync
скрипта.
Для других возможных вариантов "no-*". Я думаю, вы можете использовать большинство из них, просто попробуйте. Они объяснены в man sshd
->AUTHORIZED_KEYS FILE FORMAT