2

У меня есть ключ SSH без перефразирования, который позволяет пользователю войти на удаленный сервер.

Этот ключ используется для монтирования папки на удаленном сервере с помощью sshfs и резервного копирования файлов на моем ноутбуке.

Мне бы хотелось, чтобы этот ключ имел достаточные права только для резервного копирования. Итак, поскольку sshfs использует sftp, я подумал:

command = "путь к sftp на сервере"

в файле author_keys сервера будет работать.

Теперь, когда я вхожу через ssh, я получаю это:

использование: sftp [-1246Cpqrv] [-B размер_буфера] [-b пакетный файл] [-c шифр]

   [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
   [-o ssh_option] [-P port] [-R num_requests] [-S program]
   [-s subsystem | sftp_server] host

   sftp [user@]host[:file ...]
   sftp [user@]host[:dir[/]]
   sftp -b batchfile [user@]host

Соединение с «именем моего сервера» закрыто.

Я полагаю, это означает, что этот ключ может использовать только sftp, что я и хотел.

Однако, когда я использую sshfs, я получаю следующее:

удаленный хост отключен

Сервер представляет собой NAS-устройство Synology DS212j с DSM 4.2, и нет программы sftp-server. Вот как выглядит раздел подсистемы в файле sshd_config:

# переопределить по умолчанию нет подсистем
# Подсистема sftp /usr /libexec /sftp-server
# Подсистема sftp internal-sftp -f DAEMON -l VERBOSE -u 000

Подсистема sftp internal-sftp -f DAEMON -u 000
# Подсистема sftp /usr /syno /sbin /sftp-server -l DEBUG3

sshfs, использующий ключ без каких-либо ограничений на команды, работает нормально.

Пожалуйста, порекомендуйте. Есть ли еще команды, которые я должен включить в переменную "command" в файле author_keys?

Заранее благодарю за любую предоставленную помощь.

1 ответ1

0

Для sshfs я не знаю, какую команду вы должны авторизовать, но если вы хотите добавить много команд, авторизованных для определенного ключа, вы можете использовать скрипт bash для выполнения авторизации:

command = "/home/user/validate-rsync.sh" ssh-dss AAAAB3NzaC1yc

/home/user/validate-rsync.sh:

#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac

убедитесь, что скрипт validate-rsync.sh является исполняемым. Я надеюсь, что это может помочь вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .