好的,我有一个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中。 这可能会帮助你提取它。