我有一个没有释义的 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是可执行的。希望它能帮到你。