svn - 使用 Subversion 进行自动身份验证

标签 svn authentication ssh

我有一个通过 ssh+svn 连接的 SVN 服务器.当 check out 包含大量 svn:external 的特定目录时存储库,我必须多次输入密码。

  • 如何设置我的 Subversion 客户端以自动进行身份验证?
  • 这方面的文档在哪里?
  • 最佳答案

    我不知道 SVN 的内置机制来进行自动 SSH 身份验证。但是您可以使用来自 SSH 的公钥认证机制:

    这是一个关于如何做到这一点的简短教程:http://www.petefreitag.com/item/532.cfm您可以在 Internet 上轻松找到有关此的更多信息。

    由于它很有用,这里有一个更详细的指南,其中包含有关代理转发的信息:http://unixwiz.net/techtips/ssh-agent-forwarding.html

    关于公钥认证的一些基础知识

    当您尝试登录时,远程 SSH 服务器有不同的方式来验证您的身份。经典密码就是其中之一。但也可以使用基于异步键的机制。

    您在本地机器上创建一个 key 对:一个私有(private) key 和一个公共(public) key 。然后,您必须将公钥分发到要登录的所有远程 SSH 服务器。永远不要分发私钥非常重要。

    当您尝试登录时,远程服务器会发送一个使用私钥加密的质询。如果您熟悉异步密码学,您就会知道现在只有公钥才能破译所说的加密挑战。因此,当服务器收到响应时,它可以对其进行解密,如果答案和挑战相同,则您已通过身份验证。

    SVN 操作或与此远程计算机的任何其他 SSH 连接不再需要密码。

    SSH 代理

    有关 ssh-agents 的更多信息。

    创建 key 对时,ssh-keygen 将要求输入密码以进一步加密私钥以提高其安全性。您可以将此密码留空,这样您在使用 key 时就不必输入密码。

    但是,如果选择密码,则每次要使用 key 时,都必须输入密码,这与使用 SSH 进行密码验证相同。但是有一个巧妙的解决方案:ssh-agent。

    代理是一个小守护进程,它将您的 key 存储在内存中。当您使用 ssh-add 将 key 添加到代理时,它会首先询问您的密码,然后,每次 SSH 客户端需要 key 时,它都会询问代理,因此不再需要密码。

    在我的第二个链接中,您将找到有关代理转发的信息,这也是使用 ssh-agent 的一个很好的理由。

    我希望我很清楚,否则你想问任何问题。

    关于svn - 使用 Subversion 进行自动身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5152122/

    相关文章:

    svn - SVN:是否可以获得分支的给定版本号的svn信息

    svn - 如何在单个 xml 文件中为分支中的所有非二进制文件获取递归 svn 责任报告?

    visual-studio-code - VS Code SSH 不断断开连接,但我可以正常使用 SSH

    python-2.7 - 如何设置 pexpect ssh session 的列宽?

    c# - 使用 NoSQL 数据库进行 ASP.NET Core 身份验证

    linux - Ansible wait_for 重启

    Delphi XE2 改变了 DFM,尽管没有任何改变

    svn - 通过高延迟网络连接同步许多(小)文件的方法

    authentication - Vaadin 身份验证最佳实践

    ios - 如何存储非标准的Web认证?