我有一个通过 ssh+svn
连接的 SVN 服务器.当 check out 包含大量 svn:external
的特定目录时存储库,我必须多次输入密码。
最佳答案
我不知道 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/