如何创建 ssh 密钥以便它只能在 Synology NAS 上使用 sshfs?

如何创建 ssh 密钥以便它只能在 Synology NAS 上使用 sshfs?

我有一个没有释义的 ssh 密钥,它允许用户登录到远程服务器。

此密钥用于使用 sshfs 在远程服务器中挂载文件夹并备份我的笔记本电脑中的文件。

我希望此密钥仅对备份具有足够的权限。因此,由于 sshfs 使用 sftp,我认为输入:

command="服务器中 sftp 的路径"

在服务器的authorized_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 时,出现以下情况:

远程主机已断开连接

服务器是 Synology NAS 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 使用密钥并且对命令没有任何限制,可以正常工作。

请指教。我是否应该在 authorized_keys 文件的“command”变量中包含更多命令?

提前感谢您提供的任何帮助。

答案1

我不知道对于 sshfs 您必须授权哪个命令,但是如果您想添加为特定密钥授权的多个命令,您可以使用 bash 脚本来执行授权:

命令=“/home/user/validate-rsync.sh” ssh-dss AAAAB3NzaC1yc

/home/用户/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是可执行的。希望它能帮到你。

相关内容