Ubuntu 26.04 最全 SSH 备份与恢复教程

重装系统、迁移服务器、更换设备的时候,我踩过最大的坑之一,就是弄丢了 SSH 的密钥和配置。

一旦私钥没了,所有免密登录的云服务器、Git 仓库、内网设备全部连不上;要是 SSH 服务配置丢了,端口、登录权限、白名单全都要重新手动配置,费时又费力。

所以这次专门针对 Ubuntu 26.04 整理了一套完整的 SSH 备份恢复方案,从简单的手动备份、安全加密备份,到可以长期用的自动化脚本、完整迁移恢复步骤全都写全了。不管是新手临时用,还是生产环境稳妥留存,都可以直接照搬使用。


在动手备份之前,先理清一个核心问题:我们要备份的 SSH 文件其实分两类,用途完全不一样,不用盲目全备,按需选择就好。

第一类是用户客户端配置,也是所有人都必须备份的内容,存放路径在 ~/.ssh/。这里保存着我们日常远程登录的所有个人数据,每一个文件都各司其职:id_ed25519id_rsa 是核心私钥,属于绝对不能丢失的文件,一旦遗失无法找回;*.pub 是可以公开分发的公钥;config 存放着自定义的服务器别名、SSH 端口、代理跳转等个性化配置;known_hosts 记录了所有连接过的服务器指纹,省去重复确认主机的麻烦;authorized_keys 则是本机被其他设备免密登录的授权公钥。

第二类是系统服务端配置,只需要搭建了 SSH 服务的服务器备份,普通桌面客户端完全不用管,路径在 /etc/ssh/,需要管理员权限才能操作。其中 sshd_config 是 SSH 服务的核心配置文件,端口修改、密码登录开关、用户白名单、连接限制等关键设置都在这里;而 ssh_host_*_key 是服务器专属主机密钥,丢失后客户端连接会直接提示密钥变更、认证失败。


如果只是临时迁移、快速备份,不需要复杂操作,用手动备份的方式就足够了,简单零门槛,直接复制终端命令就能用。

我们可以先备份个人的 SSH 客户端配置,命令会自动生成带日期的备份文件夹,有效避免文件覆盖,保证每一次备份都独立留存:

mkdir -p ~/ssh_backup_$(date +%Y%m%d)
cp -r ~/.ssh ~/ssh_backup_$(date +%Y%m%d)/user_ssh

如果是服务器设备,再额外执行一条命令,备份系统的 SSH 服务配置:

sudo cp -r /etc/ssh ~/ssh_backup_$(date +%Y%m%d)/system_ssh

执行完成后,主目录会生成对应的备份文件夹,里面完整保存了个人登录配置和系统服务配置,临时备份、快速迁移完全够用。


手动明文备份只适合本地临时使用,但凡涉及生产环境、重要服务器密钥,绝对不建议明文存储。私钥属于极高敏感数据,一旦泄露,所有关联设备都会面临被盗登的风险。这里推荐大家用 GPG 加密打包备份,Ubuntu 26.04 默认自带该工具,无需额外安装,安全性拉满。

一条命令即可打包用户、系统全部 SSH 文件,同时加密锁定:

BACKUP_NAME=ssh_full_backup_$(date +%Y%m%d).tar.gz
sudo tar -czPf - ~/.ssh /etc/ssh | gpg -c > ~/$BACKUP_NAME

执行后输入两次自定义加密密码,就能生成加密备份包,没有密码任何人都无法解压查看内容,彻底杜绝泄露风险。

后续需要恢复的时候,执行对应的解密解压命令,输入设置的密码即可完整还原所有配置:

gpg -d ssh_full_backup_20260729.tar.gz | sudo tar -xzP

如果想要长期稳定备份、定期留存,不想每次都手动敲命令,我更推荐用一键自动化备份脚本。脚本可以自动完成新建目录、备份文件、加密打包、清理临时冗余文件全套操作,省心又高效。

首先新建一个脚本文件 backup_ssh.sh,将下方完整代码粘贴进去:

#!/bin/bash
set -e
DATE=$(date +%Y%m%d_%H%M)
BACKUP_DIR="$HOME/ssh_backups"

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 备份用户SSH配置
cp -r ~/.ssh "$BACKUP_DIR/user_ssh_$DATE"

# 备份系统SSH配置
sudo cp -r /etc/ssh "$BACKUP_DIR/system_ssh_$DATE"

# 加密打包备份文件
tar -czP -C "$BACKUP_DIR" . | gpg -c > "$BACKUP_DIR/ssh_all_$DATE.tar.gz"

# 清理临时文件夹,只保留加密包
rm -rf "$BACKUP_DIR"/user_ssh_* "$BACKUP_DIR"/system_ssh_*

echo " SSH自动备份完成!"
echo " 备份文件:$BACKUP_DIR/ssh_all_$DATE.tar.gz"

保存文件后,赋予执行权限并直接运行脚本:

chmod +x backup_ssh.sh
./backup_ssh.sh

输入加密密码后,就会生成干净的加密备份包,无任何冗余文件,非常适合长期自用、定时备份。


备份的最终目的就是恢复,重装系统、设备迁移后,按照下面的步骤操作,即可完整还原 SSH 所有配置。这里重点提醒一句:SSH 对文件权限极其严格,权限出错会直接导致密钥认证失效,所以恢复后的权限修复是必做步骤。

先恢复个人用户的 SSH 密钥配置,清空旧配置后导入备份文件,再修复权限:

# 清空旧配置(谨慎执行)
rm -rf ~/.ssh

# 导入备份文件
cp -r ~/ssh_backup/user_ssh ~/.ssh

# 关键:修复SSH权限(必执行!)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*
chmod 644 ~/.ssh/*.pub ~/.ssh/config ~/.ssh/known_hosts

如果是服务器设备,继续恢复系统 SSH 服务配置,校验配置无误后重启服务即可生效:

# 替换系统SSH配置
sudo rm -rf /etc/ssh
sudo cp -r ~/ssh_backup/system_ssh /etc/ssh

# 检查配置是否有误
sudo sshd -t

# 重启SSH服务生效
sudo systemctl restart ssh

整套操作完成后,所有远程登录、服务配置都会恢复到备份前的状态,无需重复配置,完美实现无缝迁移。


最后分享几个实用的安全注意事项,都是实操中总结的避坑要点,建议大家认真看完:

第一,私钥绝对禁止明文存储,不要把未加密的私钥上传到云盘、代码仓库等公共平台,重要备份务必用 GPG 加密打包;第二,备份文件最好离线留存,拷贝到 U 盘或私密离线云存储,不要只保存在本机,避免设备损坏导致备份全部丢失;第三,建议给私钥设置解锁密码,通过 ssh-keygen -p 即可配置,实现双重安全防护;第四,区分设备使用场景,桌面客户端只需备份 ~/.ssh 用户配置,服务器建议用户+系统配置全套备份;第五,多用户服务器中,每个用户需要单独备份自己的 ~/.ssh 目录,互不通用。


如果只是临时快速备份,不想执行复杂命令,这里给大家分享一条极简单行命令,快速打包个人 SSH 配置,满足临时留存需求:

tar -czf ~/ssh_back_$(date +%Y%m%d).tar.gz ~/.ssh

简单总结一下全文的核心要点,方便大家快速记忆和复用:日常使用优先备份用户 .ssh 目录,服务器额外补充 /etc/ssh 系统配置;临时备份可用手动打包,生产环境务必使用 GPG 加密保障安全;恢复配置后必须修复文件权限,否则密钥认证会失效;长期使用推荐自动化脚本,定期自动备份,彻底杜绝 SSH 配置丢失、设备迁移繁琐的问题。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress