I'm reinstalling my Linux desktop, how do I keep SSH logins working?

Che*_*ony 15 ssh

Long ago I generated a key pair using ssh-keygen and I used ssh-copy-id to enable login onto many development VMs without manually having to enter a password. I've also uploaded my public key on GitHub, GitLab and similar to authenticate to git repositories using git@ instead of https://.

如何重新安装我的 Linux 桌面并保持所有这些登录名有效?备份和恢复是否~/.ssh/足够?

l0b*_*0b0 29

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

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

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


tel*_*coM 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 的重要自动化设置,则确认更改的主机密钥可能是一个主要的麻烦。

  • 请注意,如果您通过 SSH 连接 *in*,则无论如何您可能想要轮换 *host* 密钥;但这取决于您的密钥管理情况(例如,密钥是几年前生成的,而您还没有`/etc/ssh/ssh_host_ed25519_key`,或者您有一个 RSA 1024 密钥,甚至是一个 DSS 密钥)。 (2认同)