我已经生成了一对私钥/公钥 ssh 密钥(在 Linux 上),它们现在位于我的.ssh
文件夹中。
我已经将我的 ssh id ( ssh-copy-id
) 复制到了一台远程机器,我想连接该机器而不必一直输入我的密钥。
复制我的 ssh id 后,我无需输入密码即可连接到机器,并且我已经仔细检查过,.ssh/authorized_keys
唯一授权的公钥是我刚刚复制的那个(这没问题)。
然而,我发现有两个问题:
第一的出于某种原因,ssh-copy-id
也将我的私钥复制到了该机器上。我已将其删除,因为它似乎是一个将您的私钥传播到其他机器上的大型安全漏洞。这是正确的吗?
第二,我发现我的公钥现在已写入.ssh/authorized_keys
。此文件的权限配置为只有我的用户可以读取它(-rw-------
)。但是,如果有人设法访问此内容,他/她可以无需密码访问我的远程计算机,这是正确的吗?我发现,在我的本地计算机中,此文件已生成,并具有允许任何其他用户(登录到计算机)读取它的权限。这难道不是一个安全漏洞吗?我是否应该更改权限,以便只有我的用户可以读取文件的内容?
最后的,在连接远程机器时,哪个密钥实际上用于验证我的身份,私人密钥还是公共密钥?
答案1
ssh-copy-id
应该只将公钥复制到authorized_keys
,而不应该复制您的私钥。您确定没有手动将任何其他内容复制到远程计算机,还是您还在远程计算机上生成了一组密钥(使用默认文件名)?- 不可以,只有当某人可以写入自己的公钥时,
authorized_keys
他们才能以您的身份访问该机器。能够读取该文件并不意味着可以访问任何其他机器。 - 两者都有。当您尝试连接时,您的私钥用于签署远程计算机提出的质询,然后使用公钥在远程计算机上进行检查,以证明签署该质询的是您的私钥。
我建议你去看看非对称加密是如何工作的。