I have the following problem: I followed the many tutorials one can find on setting up a public key access via svn+ssh to a subversion repository on a linux machine with ssh-only access. It seems to work for checkouts, updates and commits, but if someone tries to merge or uses the ^ operator to copy, it crashes.
Let me give more information in the form of an example: The svn repository is in the folder /home/bob/svn/project of machine mymachine.myhost.com and belongs to user bob (aka: me). I generated a key for alice and added the following line to /home/bob/.ssh/authorized_keys:
command="/usr/bin/svnserve -t -r /home/bob/svn/project --tunnel-user=Alice",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa <alices key> alice
Alice was able to checkout the repository using
svn co svn+ssh://bob@mymachine.myhost.com@
She can commit changes and update. However, if she tries to merge or do svn cp using the ^ operator on her machine as follows:
svn cp ^/trunk/ branches/alicesbranch
te server does not react and after a while she gets the following message
svn: E210002: Unable to connect to a repository at URL 'svn+ssh://bob@mymachine.myhost.com/trunk/'
svn: E210002: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
svn: E210002: Network connection closed unexpectedly
After some research, I gave up, because in most cases I only get discussions from people where the repository could not be accessed at all. However in my case, I/Alice do have access, but not as general as some svn operations Seem to need.
I believe that I did something wrong with the combination of the svnserve command and the path Alice uses to checkout, but I don't know what.
In reality, the server is a machine for which I don't have root access. Also, the network seems to be very shielded from external access: Only ssh is allowed, but as soon as for example the above error occurs, I/Alice cannot login at all on said hostname for a while, probably because the firewall declines access for a while for security reasons because of a failed ssh connection. This is also why I cannot just go ahead and do lots of trial-and-errors with different svnserve commands and different checkout commands, because every error will force me to wait until I can do another trial.
This is why I hope someone here can help me. I hope I gave enough information to pin down the problem.
Sincerly, Daschm
Edit 1: Here is svn info Alice would get
Path: .
Working Copy Root Path: /home/alice/mysvnprojects/myprojectwithbob
URL: svn+ssh://bob@mymachine.myhost.com
Relative URL: ^/
Repository Root: svn+ssh://bob@mymachine.myhost.com
Repository UUID: 8f8511ce-d5fa-11e3-abfa-cd5eac3f4aa8
Revision: 121
Node Kind: directory
Schedule: normal
Last Changed Author: Alice
Last Changed Rev: 121
Last Changed Date: 2014-08-22 15:36:56 +0200 (Fri, 22 Aug 2014)
Edit 2: Changing the svnserve command to
command="/usr/bin/svnserve -t -r /home/bob/svn/ --tunnel-user=Alice"
and changing the co command accordingly does not solve the problem. Here is the output:
/home/alice/mysvnprojects/myprojectwithbob: svn co svn+ssh://bob@mymachine.myhost.co/project
[looong list of files]
Checked out revision 129.
/home/alice/mysvnprojects/myprojectwithbob: ls
project
/home/alice/mysvnprojects/myprojectwithbob: cd project/
/home/alice/mysvnprojects/myprojectwithbob: svn info
Path: .
Working Copy Root Path: /home/alice/mysvnprojects/myprojectwithbob
URL: svn+ssh://bob@mymachine.myhost.com/project
Relative URL: ^/
Repository Root: svn+ssh://bob@mymachine.myhost.com/project
Repository UUID: 8f8511ce-d5fa-11e3-abfa-cd5eac3f4aa8
Revision: 129
Node Kind: directory
Schedule: normal
Last Changed Author: Alice
Last Changed Rev: 129
Last Changed Date: 2014-09-02 12:33:56 +0200 (Tue, 02 Sep 2014)
/home/alice/mysvnprojects/myprojectwithbob: ls
branches trunk
/home/alice/mysvnprojects/myprojectwithbob: svn cp ^/trunk branches/mytestbranch
svn: E210002: Unable to connect to a repository at URL 'svn+ssh://bob@mymachine.myhost.com/project/trunk'
svn: E210002: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
svn: E210002: Network connection closed unexpectedly
If I do
svn cp ^/trunk ^/branches/mytestbranch
instead, it seems to work! However, I still cannot merge
cd trunk
svn merge ^/branches/mytestbranch .
leads to the known error.
Edit 3:
It seems as if everything fails which tries to access anything beyond the root directory. For example:
svn co svn+ssh://bob@mymachine.myhost.com@
works, but [assuming the basic setup where "svnserve -r /home/bob/svn/project" is used]
svn co svn+ssh://bob@mymachine.myhost.com/trunk
fails. This seems to be a common denominator to all failing and working cases.