如何将密码添加到在没有密码的情况下生成的 OpenSSH 私钥?
Posted
技术标签:
【中文标题】如何将密码添加到在没有密码的情况下生成的 OpenSSH 私钥?【英文标题】:How do I add a password to an OpenSSH private key that was generated without a password? 【发布时间】:2011-04-18 15:32:06 【问题描述】:我使用 puttygen 生成了一个 OpenSSH 私钥(并以 OpenSSH 格式导出)。如何在现有密钥上输入密码(我知道如何使用密码生成新密钥)?
【问题讨论】:
如果您看到此评论,请将其中一个答案标记为已接受或写下评论说明他们错过了什么。谢谢! 添加与更改或删除相同:***.com/questions/112396/…,更改可能相同:serverfault.com/questions/50775/… 如果您在id_ed25519
密钥上获得 Bad passphrase
但密码正确,那么您可能使用的是低级 @ 987654325@管理它。
【参考方案1】:
因为您提到了“PuTTYgen”,并且您可能正在使用 Windows ?,所以我将引导您查看“PuTTYgen”的文档。
转到此处 [https://the.earth.li/~sgtatham/putty/0.76/htmldoc/Chapter8.html#puttygen-conversions]“导入”和“导出”SSH 私钥。这些与使用“加载”和“保存”不同,因为这些选项用于加载和保存 Putty 特定的密钥文件。
这里 [https://the.earth.li/~sgtatham/putty/0.76/htmldoc/Chapter8.html#puttygen-passphrase] 用于更改密码。为新私钥创建密码短语时,您会做同样的事情。
所以步骤是“导入”SSH 密钥,您不会被要求输入密码,因为您没有创建密码。然后更改(设置)密码并确认。然后“导出”回原来的私钥文件。
希望对其他想要使用“PuTTYgen”而不是“ssh-keygen”的人有所帮助。
【讨论】:
【参考方案2】:你也可以使用openssl
:
openssl rsa -aes256 -in ~/.ssh/your_key -out ~/.ssh/your_key.enc
mv ~/.ssh/your_key.enc ~/.ssh/your_key
chmod 600 ~/.ssh/your_key
见:https://security.stackexchange.com/a/59164/194668
【讨论】:
我想我会采取 ssh-keygen 的方式;) 感谢您提供 openssl 替代方案来完成任务。【参考方案3】:试试命令ssh-keygen -p -f keyfile
来自 ssh-keygen 手册页
-p Requests changing the passphrase of a private key file instead of
creating a new private key. The program will prompt for the file
containing the private key, for the old passphrase, and twice for
the new passphrase.
-f filename
Specifies the filename of the key file.
例子:
ssh-keygen -p -f ~/.ssh/id_rsa
【讨论】:
对于那些想知道 -f 是什么的人:它指定输入文件。 // ,@sigjuice,你能发一个例子吗,比如$ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsa
?这可能会帮助那些不知道如何区分公钥和私钥的人,并帮助他们更快地弄湿自己的脚。
出于某种原因,在 MacOS 10.14 上,这不会使用 Proc-Type: 4,ENCRYPTED
标头格式化文件,这与某些检查密码短语的应用程序不兼容。在尝试了几种方法让它工作之后,最简单的解决方法就是在运行 Ubuntu 的 Docker 容器中做同样的事情,然后将密钥复制回我的 Mac。
我仍然可以在不输入任何密码的情况下以明文形式读取我的ssh私钥,所以我猜上面的命令还不够!? (我不希望黑客能够在不知道额外密码的情况下读取我的私钥)【参考方案4】:
对 ssh-keygen 使用 -p 选项。这允许您更改密码而不是生成新密钥。
根据 sigjuice 显示更改密码:
ssh-keygen -p -f ~/.ssh/id_rsa
所需的密码将是新密码。 (这假设您已将公钥 ~/.ssh/id_rsa.pub
添加到您的 authorized_keys 文件中。)使用 ssh 进行测试:
ssh -i ~/.ssh/id_rsa localhost
您可以拥有多个不同名称的键用于不同的用途。
【讨论】:
// ,请您举个例子,以及如何检查该选项是否有效,@BillThor? 我不明白。密码已设置,当我再次尝试更改时,我看到了。但是当我尝试登录远程服务器时,它并没有要求输入这个密码,为什么? 没关系。它每次会话询问一次 :) 不知道。 这是否意味着您必须退出并重新登录?关闭终端窗口并重新打开它对我不起作用。 您可以输入ssh-add -D
来删除您缓存的身份。然后,尝试再次连接,它会询问您的密码。使用 ssh-add -l
查看您的缓存身份列表。以上是关于如何将密码添加到在没有密码的情况下生成的 OpenSSH 私钥?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 iText 将没有所有者密码的仅用户密码添加到 PDF
如何在没有 TouchID 和密码的情况下使用 Secure Enclave?