Я хочу иметь ограниченный доступ к серверу Linux, чтобы иметь возможность получать определенный набор журналов. В идеале я хотел бы иметь возможность запускать rsync локально, чтобы получать журналы с сервера, и по соображениям безопасности я не хочу предоставлять пользователю полный доступ к ssh для входа в систему.
Создайте отдельного пользователя только для этой цели. Разрешите пользователю входить в систему только с помощью ключа SSH. В файле authorized_keys для пользователя отредактируйте открытый ключ, чтобы разрешить только команду. Эта команда должна не быть указателем на сценарий оболочки; вместо этого вставьте сценарий оболочки напрямую в ключ.
Вот пример. Настройка здесь такова, что на сервере есть задание cron, которое перемещает ежедневные журналы в / var / log / logfetch. Другой сервер с IP 10.1.2.3 подключится и отправит команду. Если используется команда BACKUP, клиент получит сжатый tar-файл с файлами в каталоге / var / log / logfetch. Если это вместо имени файла, файл с этим именем в / var / log / logfetch будет удален. Любая другая команда будет проигнорирована. Все команды будут зарегистрированы. Подключения разрешены только с этого одного IP-адреса.
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="read ARG;HOST=$(/usr/bin/hostname);if [ \"$ARG\" = \"BACKUP\" ]; then cd /var/log/logfetc;/usr/bin/tar -cf - *;/usr/bin/logger -t LOGFETCH -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";else cd /var/log/logfetch; if [ -f $ARG ]; then /usr/bin/rm $ARG;/usr/bin/logger -t LOGFETCH -p daemon.info \"INFO: Backup-file \\"$ARG\\" removed on $HOST by $USER\";else /usr/bin/logger -t LOGFETCH -p daemon.info \"WARNING: $USER failed to remove \\"$ARG\\" on $HOST\";exit -1;fi;fi " ssh-dss AA.....
Это может быть излишним для вашей конкретной ситуации, но для третьей стороны достаточно сложно злоупотребить, и должна быть возможность адаптироваться к вашим конкретным потребностям.