如何解密 id_rsa 私钥?

mj *_* gt 6 ssh

总 linux 初学者在这里。

所以我刚刚在我的服务器上安装了https://github.com/niruix/sshwifty。我只使用 SSH 密钥登录我的服务器。我的 SSH 密钥受密码保护。

现在,当我想通过 sshwifty 连接到我的服务器时,它会要求我提供我的私钥。 图像

在此处输入图片说明

    -----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,20DD60A29753E6F89413A2F03DE8B20F
Run Code Online (Sandbox Code Playgroud)

我的私钥仍然是加密的,我假设我必须解密它并将该输出粘贴到 Sshwifty 中。

我已经尝试过的:

在此处输入图片说明

openssl enc -d -aes-128-cbc -in id_rsa -out dec_rsa
Run Code Online (Sandbox Code Playgroud)

这给了我一个糟糕的幻数错误。

感谢帮助

Rui*_* N. 10

命令是openssl rsa -in ~/.ssh/id_rsa.

如果~/.ssh/id_rsa是加密的,openssl会要求你输入密码来解密私钥,否则直接在屏幕上输出密钥。

但话虽如此,你不应该使用id_rsafile. 因为 Sshwifty 在后端做 SSH 的事情。这意味着你给它的私钥将通过网络发送到后台服务器,这是一种可怕的,因为私钥是打算只活在本地计算机上,应该永远是直接送到别人。

但是,我们在这里处理设计妥协:Sshwifty 后端需要私钥才能为您通过 SSH 服务器进行身份验证。因此,为了更好地保护自己,您可以生成一个 SSH 密钥对,专门用于 Sshwifty。

要生成私钥,请运行 command ssh-keygen -t rsa -f ~/.ssh/my_server,当被要求时Enter passphrase (empty for no passphrase):,只需点击Entersoopenssl不会加密私钥。

命令执行成功后,你会在~/.ssh/目录下发现两个新文件:my_server一个是连接SSH服务器时可以在Sshwifty中使用的私钥,my_server.pub另一个是你需要部署在你的SSH服务器上的公钥。

在这种情况下,如果由于my_server某种原因泄漏,则只会影响一台服务器。


现在,让我们谈谈“设计妥协”。

在设计软件时,我花了一些时间寻找可以在 Web 浏览器中运行的 SSH 客户端库,但我没有找到可靠的(如果有的话)。在那之后,我花了更多时间阅读 SSH 规范,最终决定我不可能在给定的期限内安全地实现如此复杂的协议。

所以,我决定采用当前的设计,不仅因为它可以节省时间,还因为它经过了实战测试,应该能提供预期的安全性。

是的,我是 Sshwifty 的作者,由于无聊,他碰巧在谷歌上搜索了我的软件名称,并登陆了此页面。为了记录:我完全没有发布问题来宣传我的软件。


希望这个答案有帮助。对不起,我的英语不好。

  • `openssl rsa` 命令给你错误?也许尝试“ssh-keygen -p”,这将为“id_rsa”文件设置一个新的密码(或者如果您给它一个空的新密码则解密它)。`ssh-keygen -p` 命令将覆盖 `id_rsa` 文件,您可能需要先备份它。 (3认同)
  • 你的英语很好。运行此命令后,我收到此错误: 139869952369088:错误:06065064:数字信封例程:EVP_DecryptFinal_ex:解密错误:../crypto/evp/evp_enc.c:537:139869952369088:错误:0906A065:PEM例程:PEM_do_header:解密错误:../crypto/pem/pem_lib.c:461: (2认同)

小智 5

如果您希望“解密” SSH 密钥,使其不再需要密码,您可以通过运行以下命令来实现:

ssh-keygen -p -f ~/.ssh/<private key file>
Run Code Online (Sandbox Code Playgroud)

这是更改私钥密码的命令。您需要输入密码,然后输入新密码。如果您只是按 Enter 键输入新密码,则新密码将在没有密码的情况下存储。