我想限制用于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
一个 shell 脚本来检查客户端是否使用了正确的命令。像这样(简化,未经测试):
#!/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