在Amazon ec2 Ubuntu Linux中使用SVNServe设置SVN服务器

这是一个令人头疼的问题。 从哪里开始? 到目前为止,我已经按照这篇文章,以及后续教程和我的输出,当我尝试做

svn+engine_ssh://[insert-elastic-ip-here]/var/svn/test 

我得到以下输出:

 Permission denied (publickey). svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file. svn: Network connection closed unexpectedly 

我的configuration文件在隧道部分(在ec2服务器上)看起来如下所示:

[隧道]

 engine_ssh = /usr/bin/ssh -l username 

我在本地机器的隧道中有相同的列表,只使用我的本地用户名,而不是我的远程用户名。

我猜这个问题是我需要生成一个SSH密钥,并以某种方式将其设置在我的服务器上? 问题是ec2所使用的文件被称为hosts.pem作为我的sshconfiguration文件的IdentityFile

因此,我在这里做错了什么? 我能做什么? 有没有其他的使用SSH + SVN的我的服务器?

如果有人需要更多的信息,我会很高兴发布。

是的,你需要你的服务器允许以某种方式通过SSHlogin – 可以通过在你的sshd_config中使用密码login或者使用密钥login – 查看这个问题获取关键login工作的一些细节。

你有点过分复杂的结帐过程; 您的用户名规范可以包含在结帐URL中,不需要隧道configuration。 这将工作得很好:

 svn+ssh://remoteusername@[insert-elastic-ip-here]/var/svn/test 

有没有其他的使用SSH + SVN的我的服务器?

是的,一点没错。 你的问题的标题引用svnserve ,但这不是准确的,因为你没有使用它 – 这是方法1,是非常基本的。 你不想通过互联网使用它,因为没有数据或证书的encryption。

方法2是您目前正在使用的SSH方法。

方法3是一个使用WebDAV服务存储库的Web服务器; 典型的go-to选项是Apache和mod_dav_svn模块。 如果你不喜欢SSH选项,你一定可以看看它; 它更灵活一点。

我从你所看到的错误中猜测你没有把个人的ssh密钥放到远程机器上。

快速解决您的问题可能只是将您的本地id_rsa.pub添加到服务器的授权密钥文件。

第一: cat ~/.ssh/id_rsa.pub

其次:复制完整的string,然后编辑粘贴id_rsa.pubstring的/home/USERNAME/.ssh/authorized_keys

如果您还没有个人ssh密钥,只需运行ssh-keygen

(可选)如果您不想这样做,可以通过指定SVN_SSH环境variables来为EC2机器使用ssh密钥。

export SVN_SSH="ssh -i path_to_your/key/goes/here"