You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

重装Ubuntu回退至16.04并保留SSH密钥以维持远程登录

如何在重装Ubuntu 16.04后保留远程机器的SSH密钥登录

别担心,只要提前做好备份和后续的正确配置,那些无法物理访问的远程机器完全可以继续自动登录你的VPS。下面是一步步的实操指南:

1. 先备份当前服务器的授权密钥文件

在你目前的Ubuntu 17.04系统上,首先要把存储所有允许登录公钥的核心文件备份好——这个文件是~/.ssh/authorized_keys(对应普通用户),如果是root用户则是/root/.ssh/authorized_keys

你可以用两种方式备份:

  • 下载到本地电脑(最稳妥):
# 备份普通用户的密钥文件到本地
scp ~/.ssh/authorized_keys your-local-username@your-local-ip:/your/local/save/path/

# 如果是root用户,执行这个
scp /root/.ssh/authorized_keys your-local-username@your-local-ip:/your/local/save/path/
  • 复制内容到本地文本:直接查看文件内容,把所有公钥复制粘贴到本地的记事本里保存:
cat ~/.ssh/authorized_keys

2. 重装Ubuntu 16.04系统

重装时注意两个细节:

  • 如果你的VPS控制面板支持自定义SSH密钥安装,可以直接把备份的公钥内容填入对应字段,这样系统装好后会自动配置好密钥登录。
  • 如果没有这个选项,就正常安装系统,记住装完后第一时间安装SSH服务。

3. 恢复授权密钥并设置正确权限

重装完成后,先通过VPS控制台或临时密码登录新系统,然后按以下步骤操作:

3.1 安装SSH服务(如果没预装的话)

sudo apt update && sudo apt install openssh-server -y

3.2 恢复authorized_keys文件

把之前备份的文件上传到新系统的对应用户目录:

# 恢复到普通用户(比如ubuntu用户)
scp /your/local/save/path/authorized_keys ubuntu@your-vps-ip:~/.ssh/

# 恢复到root用户
scp /your/local/save/path/authorized_keys root@your-vps-ip:/root/.ssh/

如果没法用scp,也可以手动创建目录并粘贴内容:

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
# 把备份的所有公钥内容粘贴进去,按Ctrl+O保存,Ctrl+X退出

3.3 设置严格的权限(这一步绝对不能省!)

SSH对密钥文件和目录的权限要求非常严格,权限错误会直接导致密钥登录失败。执行以下命令设置正确权限:

# 设置.ssh目录权限为700(仅所有者可读写执行)
chmod 700 ~/.ssh

# 设置authorized_keys文件权限为600(仅所有者可读写)
chmod 600 ~/.ssh/authorized_keys

# 如果是root用户,还要确保所有者正确
chown root:root /root/.ssh/authorized_keys
chown root:root /root/.ssh

4. 验证SSH配置

检查SSH服务的配置文件,确保公钥认证功能开启:

sudo nano /etc/ssh/sshd_config

找到并确认以下配置项:

  • PubkeyAuthentication yes(开启公钥认证)
  • AuthorizedKeysFile .ssh/authorized_keys(指定授权密钥文件路径)
  • 如果之前禁用了密码登录,确保PasswordAuthentication no(可选,根据你的安全需求)

修改后重启SSH服务生效:

sudo systemctl restart ssh

5. 测试远程机器登录

现在可以让远程机器尝试自动登录,或者你用其中一台远程机器的私钥手动测试:

ssh -i /path/to/remote-machine-private-key username@your-vps-ip

如果能成功登录,说明配置完全没问题。

额外提醒:如果远程机器用的是特定用户登录(比如deploy用户),一定要在新系统里先创建这个用户,再给该用户恢复对应的授权密钥文件。

内容的提问来源于stack exchange,提问作者user3735849

火山引擎 最新活动