在Ubuntu上SVN + SSH:locking安全性 – 密码

美好的一天,

我已经安装了运行Ubuntu 12.04 LTS的服务器。 我现在已经离开了默认的SSH端口,并build立了一个DynDNS.org帐户。

从运行linux的机器上,在一个单独的networking上,我可以通过SVN + SSH查询我的服务器:

svn --username myName ls svn+ssh://[email protected]/usr/local/svn/repos/private 

目前为止这么好:我查询了用户的密码,并且似乎生成了一个SSH私钥/公钥对。 不过,我很担心。

我认为私钥/公钥是我必须事先向客户提供适当的密钥。 我想locking这台服务器,以便连接到我的SVN服务器的人有一个我提前给他们的密钥文件和用户“myName”的密码。 有什么我失踪? 在这一点上,所有似乎需要的人是我的SVN服务器的URL和用户“myName”的密码,他们在。

我怎样才能更紧密地locking这个?

谢谢!

在SSH中,公钥authentication和密码authentication(或者键盘交互authentication)是分开的事情。 您可以使用PAM或密码,也可以使用公钥(或任何其他可用的工具,如kerberos GSSAPI)。 哪一个被使用是基于function在客户端和服务器之间进行协商的。

因此,您不能同时需要公钥和密码; 你必须使用。 当然,关键也是一个特定的用户。 理论上你可以用PAM来完成这个任务,但是由于SSH客户端不支持它。

如果我记得你可以encryption密钥,以便用户需要一个密码来解密它们,但用户可以用openssl解密密钥并存储它解密,以避免input密码(如果你担心它们被盗) ,如果你真的担心被破解,攻击者可以这样做,不pipe你是否提供私钥给用户encryption或者不encryption(但是这样做非常非常困难)。

另一方面是服务器的指纹,您应该提前将其提供给客户端,或者使用DNS中的SSHFP RRtype。 这允许客户端validation其连接到正确的服务器,并且validation,而不pipe所使用的authentication机制如何。 尽pipe使用密码和键盘交互式身份validation(以防止凭据被盗),但这一点非常重要。