SSH-agent 究竟何时使用我的 private_key 连接到远程服务器?

SSH-agent 究竟何时使用我的 private_key 连接到远程服务器?

我需要一些有关 SSH 的基础知识,以帮助我理解 SSH 连接的过程。

我的虚拟机上有 Ubuntu 服务器,主机上有 Ubuntu 桌面。我已通过在远程上添加 来与我的虚拟机建立连接(通过 ssh-copy-id 添加)。id_rsa.pub由以及生成。authorized_keysid_rsa.pubssh-keygenid_rsa

我成功连接到我的遥控器而没有输入密码,但我不明白具体什么时候以及为什么需要id_rsa存储的文件id_rsa.pub

我尝试删除此私钥,但尽管如此,连接仍然有效!在我看来,此文件不需要与我的 VM 建立连接。

答案1

要“探索”ssh其工作原理,您可以使用以下verbose标志。例如,

ssh -v ...

将提供有关握手的信息。您可以使用多个v(最多三个)来获取更多调试信息:

ssh -vvv ...

尽管如此,@darent 发布的维基百科页面链接值得一读,以了解非对称密钥加密。可以在以下位置找到很多有关详细信息的有用链接SuperUser 上的这个问题

答案2

让我试着用一个例子来解释这一点。假设我信任你,并希望你通过 SSH 进入我的计算机并执行某些操作。我可以告诉你我的密码,或者你可以给我你的公钥。

如果您将公钥提供给我,当您尝试登录我的计算机时,您的 SSH 客户端将使用您的私钥在您这边生成加密的身份验证请求并将其发送到我的计算机。我的计算机将使用您的公钥解密加密的身份验证请求,从而验证是您本人而不是其他人试图侵入我的计算机。

注意:私钥-公钥对不用于加密两台计算机之间的传输。因此,一旦建立连接,就不需要密钥,直到连接终止并尝试建立新连接为止。SSH 有自己的内部数据加密系统,不依赖于私钥-公钥对。

因此,通过接受您的公钥,我信任您可以进入我的计算机。如果您违背我的信任,我将从我的计算机中删除您的公钥。然后您将无法再通过 SSH 进入我的计算机。

如果您将私钥提供给其他人(或有人窃取了私钥),那么该人将能够冒充您。如果我发现您将私钥提供给了其他人,我将从我的计算机中删除您的公钥。这样,您和其他人都无法通过 SSH 进入我的计算机。

如果我尝试通过 SSH 进入您的计算机,您给我的公钥将毫无用处,因为它只能用于解密您使用私钥生成的信息。如果您希望我通过 SSH 进入您的计算机,您必须将我的公钥放在您计算机的正确位置。

Ubuntu 将您的私钥存储在名为密码和加密密钥的密码管理软件中:

在此处输入图片描述

注意,中间的标签我的个人钥匙。这是为了保护您的私钥不被盗用(以及不被意外删除您的私钥)。

以下是有关海马密码管理器。

希望这可以帮助

答案3

您不应该手动“使用”您的私钥。公钥/私钥加密基于使用两个密钥,一个密钥公开,另一个密钥保留在您的计算机中,即私钥。

每当有人向您发送加密消息,或者您必须使用身份验证(如 SSH 所做的那样)时,它都会使用公钥来加密数据。一旦您获得数据,唯一可以解密的密钥就是私钥。

想象一下,如果你有两把钥匙:用一把钥匙锁住的东西,只能用另一把钥匙打开。所以不要删除你的私钥,因为这会使公钥变得毫无用处。

如果你想了解更多,可以查看此链接至维基百科,对非对称密钥加密有很好的解释。

答案4

您的意思是您删除了服务器上的私钥?如果是这样,它只会在从该服务器进行 ssh 时使用。它不会对 ssh 到该服务器产生影响。

相关内容