我正在重新安装Linux桌面,如何保持SSH登录名正常工作?


15

很久以前,我使用生成了一个密钥对,ssh-keygen并且我曾经使用ssh-copy-id它可以登录许多开发VM,而无需手动输入密码。我还将公共密钥上传到了GitHub,GitLab上,并使用git@代替来向git存储库进行身份验证https://

如何重新安装我的Linux桌面并使所有这些登录正常工作?备份和还原是否~/.ssh/足够?


2
这就是为什么在安装新的Linux环境时应该有一个分区的/另一个原因之一/home
olegario

4
@olegario我不同意。我一生中的大部分时间都在使用Linux,目前管理着超过100台计算机,但是我总是发现一个单独的/home分区既麻烦又用途有限。我了解有些人认为它有用,这很好,但是我认为无论如何,这对于OP的运行情况并不能提供足够的帮助。
marcelm

5
分区仅/home通过备份tar或通过其他方式进行备份确实没有任何优势,除非您打算重复使用现有分区,否则大多数OS安装程序都会高兴地擦除它们,这是有风险的,除非它位于单独的物理磁盘上在安装过程中删除。
R .. GitHub停止帮助ICE,

1
一旦完成了重新安装,无论您做得多么精确,您都可能需要重新考虑为所有功能设置一对密钥。
CVn

Answers:


29

您至少需要备份私钥。无需在任何地方替换您的公钥就无法重新生成它们。这些名称通常以id_不带扩展名的名称开头。

可以使用以下命令重新生成公共密钥:ssh-keygen -y -f path/to/private/key。如果您设置了任何非默认值,则您的用户配置(称为“ config”的文件)也可能会很有用。

所有这些文件通常都位于〜/ .ssh中,但请先检查!


28

对于传出的 SSH连接,备份密钥对就足够了。为了方便起见,您可能只备份~/.ssh目录并将其还原到新安装中。

通常,备份和还原该目录就足够了,但是可以通过使用~/.ssh/config或中的自定义设置/etc/ssh/ssh_config,或者使用SSH代理将密钥存储在其他位置,并ssh-add从任意位置提取用于出站连接的密钥。

如果您有传入的 SSH连接,还可以考虑在备份SSH主机密钥/etc/ssh/ssh_host_*。如果您不备份这些文件,则新主机密钥将sshd在新安装中首次启动时自动生成,并且任何传入的SSH连接都将显示“ SSH主机密钥不匹配,可能是某人做错了!”。错误消息,通常会拒绝连接,除非有人删除SSH客户端上的旧主机密钥并明确接受新的主机密钥。

听起来您的Linux桌面系统上可能没有传入的SSH连接,所以我仅出于完整性的考虑而提及它。但是在服务器系统上,或者如果您设置了重要的基于SSH的自动化,那么确认更改的主机密钥可能是一个主要麻烦。


1
+1这应该是公认的答案。登录其他机器,你必须保持主机密钥,通常保存在/etc/ssh,文件名是ssh_host_*(一些文件不同的算法)。
rexkogitans

2
请注意,如果你是ssh方式连接,你可能要旋转的反正键; 但这取决于您的密钥管理情况(例如,密钥最后一次生成是在几年前,您还/etc/ssh/ssh_host_ed25519_key没有,或者您具有RSA 1024密钥,甚至还有DSS密钥)。
Piskvor在
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.