这里是 Linux 初学者。
所以我刚刚安装了https://github.com/niruix/sshwifty在我的服务器上。我只使用 SSH 密钥登录我的服务器。我的 SSH 密钥受密码保护。
现在,当我想通过 sshwifty 连接到我的服务器时,它要求我提供我的私钥。
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,20DD60A29753E6F89413A2F03DE8B20F
我的私钥仍然是加密的,我想我必须解密它并将输出粘贴到 Sshwifty 中。
我已经尝试过的:
openssl enc -d -aes-128-cbc -in id_rsa -out dec_rsa
这给了我一个严重的幻数错误。
感谢您的帮助
答案1
命令是openssl rsa -in ~/.ssh/id_rsa
。
如果~/.ssh/id_rsa
已加密,openssl
将要求您输入密码来解密私钥,否则,密钥将直接输出在屏幕上。
但话虽如此,你不应该使用id_rsa
文件。因为 Sshwifty 在后端做 SSH 的事情。意义你给它的私钥将通过网络发送到后端服务器,这有点可怕,因为私钥只存在于您的本地计算机上,并且应该绝不发送给其他任何人。
然而,我们在这里处理设计妥协:Sshwifty 后端需要私钥才能为您通过 SSH 服务器进行身份验证。因此,为了更好地保护自己,您可以生成专门在 Sshwifty 中使用的 SSH 密钥对。
要生成私钥,请运行命令ssh-keygen -t rsa -f ~/.ssh/my_server
,当被要求时Enter passphrase (empty for no passphrase):
,只需点击 ,Enter这样openssl
就不会加密私钥。
命令执行成功后,你会在~/.ssh/
目录下发现两个新文件:my_server
一个是你在Sshwifty中连接SSH服务器时可以使用的私钥,my_server.pub
一个是你需要部署在你的SSH服务器上的公钥。
在这种情况下,如果my_server
由于某种原因泄露,只有一台服务器会受到影响。
现在,我们来谈谈“设计妥协”。
在设计软件时,我花了一些时间寻找可以在 Web 浏览器中运行的 SSH 客户端库,但找不到可靠的库。之后,我又花了更多时间阅读 SSH 规范,最终决定在给定的期限内安全地实现如此复杂的协议对我来说是不可能的。
因此,我选择了当前的设计,不仅因为它可以节省时间,还因为它已经过战斗测试,并且应该提供预期的安全性。
是的,我是 Sshwifty 的作者,由于无聊,我偶然在 Google 上搜索了我的软件名称,并登陆了这个页面。郑重声明:我完全没有发布问题来宣传我的软件。
希望这个答案有帮助。抱歉我的英语不好。
答案2
如果您希望“解密” SSH 密钥,使其不再需要密码,您可以通过运行以下命令来实现:
ssh-keygen -p -f ~/.ssh/<private key file>
这是更改私钥密码的命令。您需要输入密码,然后输入新密码。如果您只是按 Enter 键输入新密码,则新密码将在没有密码的情况下存储。