SSH + svnserve -t命令,同时仍然允许shell访问

我在configuration只有一个主用户帐户(例如ownername )的网站托pipe服务器(例如website.com )时遇到了一些麻烦,以允许以下操作:

  • 用户朋友svn日志条目中显示为用户名,
  • 用户朋友可以通过SSH访问shell

所以,我在我的本地机器( 笔记本电脑 )上设置了私钥/公钥对,并将公钥复制到了website.com的/home/ownername/.ssh/authorized_keys文件中。 我将这个命令参数添加到该行:

command="svnserve -t --tunnel-user=me -r /home/ownername/" ssh-rsa A...eQ== laptoplogin@laptop 

/ home / ownername / svn /是Subversion版本库的位置。 这使我可以使用:

 [laptop]$ svn co svn+ssh://[email protected]/svn/ project 

而且我使用Subversion进行的任何更改都会在更改注释中列为用户,这非常棒。

但是,当我通过sshlogin时:

  [laptop]$ ssh [email protected] ( success ( 1 2 ( ANONYMOUS ) ... Connection closed. [laptop]$ 

那么,我试图做甚么? 我真的不知道ssh隧道知道该怎么做。 有许多网站讨论限制或删除 svn客户端的shell访问权限,但当然我想除了我自己朋友的自定义用户名之外的shell访问。

任何帮助表示赞赏!

解:

我只是设置了两个不同的id_rsa键:id_rsa_shell和id_rsa_svn。 我将这些附加到服务器的.ssh / authorized_keys文件。 然后,对于“shell”键我没有任何命令,“svn”键带有参数的svnserve。 然后,在笔记本电脑上,我将.ssh / config文件设置为有两个条目:website-shell和website-svn,每个条目的IdentityFile都指向相应的键。 ssh website-shell按预期工作。 对于svn命令,在.subversion / config中,在[tunnels]下放置:

 website = ssh -p XXXX -i /home/emptyset/.ssh/id_rsa_svn 

现在,这让我的结帐工作:

 $ svn co svn+website://website-svn/svn checkoutdirectory 

testing提交validation了svnserve –tunnel-user参数用于将我的别名放在svn提交中。 请注意,它遵守.ssh / config中定义的website-svn别名。

甜。 🙂

我想昨天对此发表评论,但却放弃了等待有人在这个特定的设置有更多的知识。 根据你的说法,你可以在同一个帐户上设置多个用户,每个用户都有不同的密钥,每个用户都可以设置成不同的命令结构。 我用户Bob会有一个键盘命令=“svnserve -t –tunnel-user = Bob -r / home / ownername /”ssh-rsa A … eQ == laptoplogin @ laptop

而Jane会是命令=“svnserve -t –tunnel-user = Jane -r / home / ownername /”ssh-rsa someother..eQ == laptoplogin @ laptop

现在通过相同的逻辑,你可以在你之间build立第三个只是执行bash的共享密钥,或者分享帐户密码login而不需要无密钥的ssh,并且可以访问shell。

也就是说,你可能只想看一下Mercurial或者Git,它们都是在库上集中托pipe开发的,而且比svn更加强大和灵活。