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

在 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

我的配置文件在隧道部分(在 ec2 服务器上)如下所示:

[隧道]

engine_ssh = /usr/bin/ssh -l username

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

我猜问题是我需要生成一个 ssh 密钥并以某种方式在我的服务器上设置它?问题是 ec2 使用的文件被称为hosts.pemIdentityFile的 ssh 配置文件。

那么,我在这里做错了什么?我该怎么办?除了为我的服务器使用 SSH + svn 之外,还有其他选择吗?

如果有人需要更多信息我很乐意发布。

答案1

是的,你需要让你的服务器以某种方式允许通过 SSH 登录 - 无论是通过允许 sshd_config 中的密码登录还是使用密钥登录 - 请参阅这个问题了解有关密钥登录工作的一些详细信息。

您的结帐流程有点过于复杂;您的用户名规范可以包含在结帐 URL 中,无需隧道配置。这样就可以正常工作:

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

除了使用 SSH + svn 之外,还有其他方法吗?

是的,绝对如此。你的问题标题提到了svnserve,但这并不准确,因为你没有使用它——这是方法 1,而且非常基础。你不想在互联网上使用它,因为没有加密——数据或凭证。

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

方法 3 是使用 WebDAV 为存储库提供服务的 Web 服务器;典型的首选选项是 Apache 和mod_dav_svn模块。如果您不喜欢 SSH 选项,您绝对可以看看它;它更灵活一些。

答案2

从您看到的错误来看,我猜测您没有将您的个人 ssh 密钥放到远程机器上。

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

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

第二步:复制完整的字符串,然后编辑/home/USERNAME/.ssh/authorized_keys并粘贴 id_rsa.pub 字符串。

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

或者,如果您不想这样做,您可以通过指定 SVN_SSH 环境变量来使用 EC2 机器的 ssh 密钥。

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

相关内容