我有一个用户,我希望他只能使用 subversion。我们有时喜欢使用 svn+ssh:// URL(用于公钥等),所以我需要他们能够通过 ssh 连接并仅运行 svnserve 命令。
当使用 svn+ssh URL 时,svn ssh 会进入并传递参数“-c svnserve -t”。我编写了一个自定义 shell,如下所示,以过滤可以运行的命令。这有效,但它不会将输入传递给 svnserve,因此当我尝试“svn up”时,我收到“svn:连接意外关闭”。
#!/bin/bash
if [ "$1" == "-c" ] && [ "$2" == "svnserve" ] && [ "$3" == "-t" ] && [ "$4" == ""] ; then
exec svnserve -t
else
echo "Access denied. User may only run svnserve."
fi
答案1
我很确定你可以在 sshd_config 的末尾放置类似的内容。
Match User svnuser
ForceCommand svnserve -t
答案2
在文件 authorized_keys 中,在command="svnserve"
他的密钥开头添加行和其他内容。这样,当他使用 ssh 连接时,它将运行该命令然后退出,例如
command="svnserve" ssh-rsa AAA...LONG AND TEDIOUS KEY...== user@localhost
检查man sshd
和颠覆文档了解详情