忘记我的(gnome)SSH代理中encryption的SSH密钥的密码。 我如何提取未encryption的版本?

好的,我有一个encryption的ssh私钥,可以访问服务器。 我的Ubuntu GNOME桌面有一个集成的graphicsssh代理(海马v3.2.2)。 这个ssh密钥在这个ssh代理中,当我login到我的桌面时它会自动解锁。 我可以ssh到服务器(使用这个encryption的ssh私钥)罚款,而不必input任何东西。

不过,我忘记了这个SSH密码的密码。

有无论如何提取(从SSH代理)未encryption的SSH密钥? 由于我可以用任何东西login服务器,我的电脑上的东西显然可以访问这个密钥的未encryption版本,所以我应该可以提取未encryption的版本,不是吗?

通过devise,你不能。 密码的整个想法是保护敏感的密码,以防窥探访问磁盘。

我不知道我是否正确理解你的问题:

我不明白为什么远程服务器会“使用这个encryption的ssh私钥”,你说这是因为它是在你的桌面上相同的encryption私钥? 为什么??

如果我省略这个短语(并且远程服务器在远程login的相关authorized_keys文件中只有您的PUBLIC密钥),那么:

  • 您(据称)忘记了您的本地私钥的密码
  • 你有一个在启动时自动启动的代理,它可以自动给你访问密钥(也就是说,当你通过ssh连接到远程服务器,它本身可能有你的公钥时,它可以使用它来授予访问权限)。 所以代理知道密码,并可以解密你的本地私钥。

    • 你确定私钥是encryption的吗? (您可以停止代理并尝试:

      ssh -i /path/to/theprivatekey remoteuser@remoteserver

    • 如果密钥真的是encryption的:启动时运行的代理显然有办法提供它的密码。 我不知道这个代理,但也许它是通过一个configuration文件(我不希望),也许通过其他一些机制(本身可以有另一个encryption保存私人密码短语?以某种方式保护,也许通过您自己的login凭据?)。 但是:一旦它被加载并使用它(即,至less在访问远程ssh服务器时),它有一点在内存中未encryption的私有ssh密钥。 在这一点上,你可以阅读它,如果你有访问你的本地机器的权限(但你必须find如何以及在哪里看)。

希望这有助于(请澄清你的问题中的晦涩的部分或纠正我的假设!)

编辑:另一个选项,更简单:该代理授予您访问权限:使用它来重新创build一对新的私钥/公钥,并将该新公钥(以适当的格式!取决于远程sshd服务器的types!在remoteuser @ remoteserver的authorized_keys文件中。 除了当前的一个(您的代理正在使用的)。 这样您就可以始终使用该代理,并且还可以使用新的(本地)私有(远程)公钥对。 (阅读有关ssh以及如何创build这些密钥,以及如何处理公钥(即,把它放在你需要login的地方)和私人(即:保持安全,只有你的眼睛,而不是世界上可读的,即使用密码encryption)。

我认为你的ssh密钥的密码在你的gnome-keyring中。 这可能会帮助你提取它。