将 SSH 私钥更改为现有的
Posted
技术标签:
【中文标题】将 SSH 私钥更改为现有的【英文标题】:Change a SSH private Key to an existing one 【发布时间】:2021-11-26 17:59:46 【问题描述】:我不得不将我的 Mac 恢复出厂设置,现在我要再次配置我需要的所有开发工具,例如 Ruby/Rails 等...
下一步是配置 git,我的问题是关于我的 ssh 密钥:
从我之前的配置中,我将我的私有 ssh 密钥保存在一个文本文件中(我不知道这在安全性方面是否是个好主意,但这不是重点),只是从我的终端复制它并粘贴它一个文本文件。
我想再次使用该私有 ssh 密钥,而不是创建一个新的公共和私有密钥。我怎样才能做到这一点?我是否必须创建一个新的,然后以某种方式将其替换为我之前保存的那个?如果有,怎么做?
如果您的回答非常具体,我们将不胜感激,因为我对这个主题并不熟悉。
提前非常感谢!
【问题讨论】:
【参考方案1】:您只需复制 .ssh
文件夹中的现有密钥即可。
如果您没有文件夹,请创建一个
mkdir ~/.ssh
复制文件(这些可能是id_rsa
,所以请检查之前的名称)
mv path_to_your_existing/id_ed25519 ~/.ssh/id_ed25519
mv path_to_your_existing/id_ed25519.pub ~/.ssh/id_ed25519.pub
注意:
你可能需要这样做
ssh-add -K ~/.ssh/<private_key_file>
【讨论】:
【参考方案2】:警告!!!
重复使用私钥几乎总是是个坏主意。在您的特定情况下,它可能是合理的,但对于可能看到此答案的其他用户来说,重新生成一对新密钥通常是更好的选择
钥匙位置
默认情况下,ssh 密钥存储在~/.ssh
下(默认隐藏)。如果需要,创建此目录。然后你可以把你保存的私钥放在那里,命名为id_rsa
。既然你提到,你对这个主题不是很常见,我想你运行简单的ssh-keygen
来获取这个没有额外选项的密钥,并且默认情况下得到一个这样命名的密钥。
在这一步之后,将复制的文件所有者更改为您的用户(可以使用chown <your username> <private key file>
实现)并将权限更改为 600(使用chmod 600 <private key file>
)
正如@DeepakMahakale 所说,在此操作之后,您可能需要执行ssh-add -K ~/.ssh/id_rsa
将您的密钥添加到系统已知的密钥列表中。
重新生成您的公钥
您可能需要再次从您的私钥中获取公钥。为此,只需运行 ssh-keygen
,提供现有的私钥,如下所示:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
其中~/.ssh/id_rsa
是指向私钥的路径,~/.ssh/id_rsa.pub
是指向将生成的公钥的路径
【讨论】:
这无济于事,因为公钥与许多其他地方相关联。例如 github 帐户,与某些服务器的 ssh 访问。 @DeepakMahakale 纠正我,如果我错了,但是要连接到远程服务器,您不需要公钥。只有私人就足够了。因此,在~/.ssh/
下复制保存的密钥就足以连接到 GitLab 等。我添加了关于重新生成公钥的部分,以防作者将来需要它。例如。将此新密钥添加到新的 ssh 服务器。
这会创建相同的公钥吗?我记得过去我必须将我的新公钥提供给 devops 以授予我对我们私人服务器的 ssh 访问权限,以便他们可以将其添加到 authorized_keys
它可能不会生成完全相同的密钥,但不会使以前的密钥失效,作者已经在远程服务器上使用过。这样,如果作者有以前的 pubkey 的 GitLab 帐户,他/她仍然可以使用它。但是,如果作者决定创建 GitHub 帐户,他/她将简单地重新生成 pubkey 并在那里使用它
非常感谢您的回复。有效! :)【参考方案3】:
您是否有以下位置: C:\Users\User\ssh\authorized_keys 要将您保存的密钥放入其中?
我个人遇到的唯一一个,我不得不用写字板++打开这个文件“授权密钥”,然后添加密钥。
如果这不起作用,请参阅此处:Click here
【讨论】:
以上是关于将 SSH 私钥更改为现有的的主要内容,如果未能解决你的问题,请参考以下文章
收到“警告:未受保护的私钥文件!”尝试导入 SSH 密钥时出现错误消息 [关闭]