使用SSH密钥登录到未知/受损的服务器是否很危险?


9

假设我向某人提供了我的公共SSH密钥id_rsa.pub,并且他/她将其安装在受到威胁的服务器上,然后要求我登录。

登录过程是否涉及将我的私钥发送到受感染的服务器?

如果是,则攻击者现在可以访问我的私有SSH密钥,这很可怕。

如果否,那么为什么在ssh -vvv输出中看到此行:

debug1: Server accepts key: pkalg ssh-rsa blen 277

这意味着私钥已发送到服务器,并接受了它。

我误会这个问题了吗?

Answers:


7

,您的私钥永远不会“发送”或传输到任何地方。

公钥加密与传统的用户名/密码认证不同。

  • 您的公开密钥就是公开的。分享它是绝对安全的。将您的公钥发送给某人可能会泄露您的身份(人们可以知道它是您的,因为它是一个唯一的号码),但是它绝不允许他人模仿您或对您进行身份验证。您也可以通过常规HTTP将您的公钥发布到SuperUser或您的网页上;这是绝对安全的,并且如果有人没有您的私钥,那将毫无用处。

  • 您的私钥就是私钥。它仅驻留在您拥有并信任(希望)的系统上,并且应始终使用解锁密码进行加密,以最大程度地确保安全,以防有人对存储在其上的系统进行物理访问。私钥绝不会通过任何按照公钥密码规则运行的正确实施的安全程序进行传输。就是说,除非您的本地系统上有一个受到威胁并且能够读取您的私钥的程序(并且该私钥没有用密码加密),否则您的私钥始终是安全的。

邮件在发送到远程服务器之前,已使用计算机上的私钥签名。因此,您不是发送私钥到远程服务器,而是发送使用私钥加密的消息。但是这两件事是不一样的:您不能从已签名的消息中派生私钥;这是公钥密码学要点的一部分。

简而言之,即使敌对攻击者获得了您的公钥获得了由您的私钥签名的消息,他们仍然将无法获取您的实际私钥,因此,他们无法模拟您的凭据或使用您的私钥来验证“您”。


我了解公共密钥的crypo流程,但被发出的调试消息感到困惑ssh。@ pjc50的答案似乎提供了我一直在寻找的保证。
Gurjeet Singh

11

您误会了该过程。

不会发送密钥,而是通过使用公钥加密某些内容(只能使用匹配的私钥解密)来构造“挑战”。

如果确实要求您输入密码,或将X转发到受感染的服务器,则存在潜在的安全风险。


谢谢。ssh也会发出此消息debug1: Offering RSA public key: <$HOME>/.ssh/id_rsa,这使人们认为即使id_rsa.pub已经被共享,私钥也正在被共享。
Gurjeet Singh

公开密钥是公开的。你可以把它给任何人。这使他们能够加密消息。私钥使您可以解密消息。只要您对自己保留私钥,就可以了。
皮特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.