阻止用户访问控制台,但仍允许svn + ssh://访问SVN回购

我在我的服务器上创build了一个用户john ,并将他添加到SVN组中,以便我们可以共享我们的代码,一切都看起来不错。 现在我想阻止这个用户通过SSH连接到控制台或shell。 在/etc/ssh/sshd_confing文件中添加以下/etc/ssh/sshd_confing行:

 Match User john ForceCommand svnserve -t 

我想问问我的configuration是否足够安全? 通过SSH的SVN命令正常工作。 当他尝试连接时,他会得到:

 blueprint:~ john$ ssh john@91.***.***.96 -p **5 john@91.***.***.96's password: ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) ) ^CConnection to 91.***.***.96 closed. blueprint:~ john$ 

我有两个问题:

  • 是这个吗? 有没有办法让john以某种方式login我的服务器?
  • 在服务器上是否存在一个选项来返回给他一个不错的消息You do not have permission to login!

这是一个正确的方法如何做到这一点。 我只有两点你可以额外提高你的SVN服务器的安全性。

首先,您只能允许SSH公钥authentication。 如果是这样,那么你可以locking用户的密码

 passwd -l USERNAME 

其次,你可以创build一个简单的包装脚本(生成的shell被replace为svnserve命令),并使用ForceCommand选项包含警告消息

 cat > /usr/local/bin/svn_cmd_wrapper.sh <<EOF #!/bin/sh -f echo "You do not have permission to login!" echo exec svnserve -t EOF 

然后,使其可执行

 chmod u+x /usr/local/bin/svn_cmd_wrapper.sh 

并在sshd_config文件中使用它:

 ForceCommand /usr/local/bin/svn_cmd_wrapper.sh