![ssh 和用户名](https://linux22.com/image/548164/ssh%20%E5%92%8C%E7%94%A8%E6%88%B7%E5%90%8D.png)
我不明白这句话中的安全性:SSH 不进行用户名匹配,只进行公钥与私钥匹配。这是对我之前一篇文章的引用,其中我可以成为用户“svn”,但只要我有自己的 P/p 密钥匹配。我是不是只是假装成别人?
这是我之前的问题及其有效答案。 使用 svn 和 Syncro 的 Linux 权限
有人能解释一下吗?
答案1
因此,当您使用密钥对登录进行身份验证时,服务器将使用存储在用户主目录中的authorized_keys文件中的公钥。正如另一个答案所说,它位于svn用户主目录中,因为那是您正在使用的帐户。
除非使用该文件,否则密钥对不会与您的 ID 绑定。或者更准确地说 - 该密钥对仅通过其在用户主目录中的 authorized_keys 文件中的存在而与您的帐户绑定。密钥本身没有任何内容将其与特定帐户绑定。
您可以将该文件复制到 Bob 的主目录,然后 Bob 就可以使用该密钥对登录。(假设权限设置正确)。
这还有意义吗?
答案2
您要连接的服务器并不关心您在自己的机器上使用的用户名。也就是说,如果您笔记本电脑上的用户名是“foobar”,您仍然可以在服务器上以“svn”的身份进行连接。但是 ssh 将默认使用您的用户名,因此您必须根据需要指定其他用户名。
在您的情况下,我相信流程是这样的:
foobar@你的计算机-> ssh-> svn@server
在这种情况下,ssh 客户端将在您的 ~/.ssh/ 目录(或等效目录)中查找与服务器上 ~svn/.ssh/authorized_keys 中的公钥相匹配的私钥。在这种情况下,一个常见的用例是 svn 用户的 authorized_key 文件中有相当多的公钥,这样许多不同的人都可以以 svn 用户的身份进行连接,而不必共享 svn 用户的密码。
或者,换句话说,你不是“假装”是 SVN 用户 - 你是变得远程服务器上的 SVN 用户。
答案3
事实就是:只要您有有效的凭证(无论是密码还是私钥),您就可以以任何用户身份登录远程系统。以防万一 - 请注意,sshd 会将您的私钥与您尝试登录的用户名的授权密钥进行匹配,而不是与您自己的用户名(如果您在该服务器上有用户名)进行匹配。
据我所知,要求原始用户名相同几乎不会提供任何安全性,例如如果您是原始服务器的管理员,您可以创建任何您想要的用户名。
答案4
如果您有自己的公钥/私钥对,则可以将您的公钥提供给任何人。他们可以将该密钥添加到他们希望授予您访问权限的任何帐户的 $HOme/.ssh/authorized_keys 文件中。
当您使用ssh 时,将使用存储在您正在使用 ssh 的主机上的私钥和存储在中的公钥来确认您的身份。您的公钥也可能位于 otherusers authorized_keys 文件中,因此也可以让您登录。ssh [email protected]
host.tld
~user/.ssh/authorized_keys
ssh [email protected]