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