Vultr 一键重装 Debian 13 + SSH Key 实战总结
工具:
bin456789/reinstall.sh(12.9k star,开源)+ Vaultwarden
1. 重装时直接加 Key
脚本原生支持 --ssh-key,debian 13 可用,和 --password 互斥,只能二选一。
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
bash reinstall.sh debian 13 --ssh-key "ssh-ed25519 AAAAC3... vultr-debian13-win"
4种写法都支持,可重复指定加多个:
bash reinstall.sh debian 13 --ssh-key "ssh-ed25519 AAAA..."
bash reinstall.sh debian 13 --ssh-key github:your_username
bash reinstall.sh debian 13 --ssh-key https://example.com/my.pub
bash reinstall.sh debian 13 --ssh-key /root/.ssh/id_ed25519.pub
# 多个 key + 指定用户端口
bash reinstall.sh debian 13 --username root --ssh-port 22 \
--ssh-key "ssh-ed25519 AAAA... pc1" \
--ssh-key github:myuser
跑错没重启前可取消:bash reinstall.sh reset
2. 直接加 Key vs 先密码装完再换 Key
结论:直接加 Key 最好。
- 直接加:全程无密码可爆破,安装时的临时 SSH 也是 Key 验证,最干净。
- 先密码:密码进
history,安装几分钟暴露密码端口,还容易忘关PasswordAuthentication yes。
只有 Key 没验证过、又没 VNC 兜底时,才用高强度随机密码过渡。
3. root + Key 够安全吗?
够了。root + ed25519 key-only 暴力破解数学上不可能,只要:
PasswordAuthentication no
PermitRootLogin prohibit-password
用 --ssh-key 装默认就是这个状态。
教程让你用 non-root 防的不是破解,是:
root用户名全网必扫,换冷门名降噪- 防
rm -rf /手滑,sudo多一次确认 - 纵深防御:私钥漏了/误开密码登录,多一道提权门槛
个人单机:root+key 继续用。多人/生产:--username deploy + PermitRootLogin no。
4. 脚本本身安全吗?
相对可信,但要懂风险:
- 开源 5000+ 行,长期维护,Debian 走官方源
deb.debian.org,不是自制包。 - 风险1:必须
root跑,会整盘抹盘,操作风险 > 木马风险。 - 风险2:用了
curl --insecure,+ 别用视频里的dd --img http://xxx杂镜像。
只装官方 debian/ubuntu 放心用。
5. 生成 Key:Linux / Win
# Linux
ssh-keygen -t ed25519 -f ~/.ssh/vultr-debian13 -C "vultr-debian13-win"
cat ~/.ssh/vultr-debian13.pub
# Win PowerShell,自带 OpenSSH
mkdir D:\password\ssh-key
ssh-keygen -t ed25519 -f D:\password\ssh-key\vultr-debian13 -C "vultr-debian13-win"
# 得到 2 个文件:
# vultr-debian13 私钥,自己留+存Vaultwarden
# vultr-debian13.pub 公钥,给 VPS
type D:\password\ssh-key\vultr-debian13.pub
- key生成在默认用户文档并显示key脚本, 命令当中";" 为win分割符号,和linux里面的"&&"区别是不管上一条是不是成功都会继续跑下一条
ssh-keygen -t ed25519 -f $env:USERPROFILE\.ssh\vultr-debian13 -C "vultr-debian13"; type $env:USERPROFILE\.ssh\vultr-debian13.pub
参数解释:
-t= type 算法,ed25519首选,又短又快。老机器才用ssh-keygen -t rsa -b 4096-f= 存到哪里,不指定默认~/.ssh/id_ed25519,多台机器必须用-f改名,否则覆盖-C= comment 注释,不改文件名,只显示在.pub末尾,方便认:
ssh-ed25519 AAAAC3... vultr-debian13-wintype= Win 版cat,显示文件内容;= 不管成功失败都跑下一条,5.1/7通用;&&是成功才跑下一条,仅PS7+
6. 默认路径 vs 自定义路径
放默认路径 C:\Users\你\.ssh\id_ed25519,ssh 会自动试,不用加参数:
ssh root@VultrIP
放 D:\password\ssh-key\... 每次都要 -i:
ssh -i D:\password\ssh-key\vultr-debian13 root@VultrIP
一劳永逸写 config:
notepad $env:USERPROFILE\.ssh\config
Host vultr
HostName 你的VultrIP
User root
IdentityFile D:/password/ssh-key/vultr-debian13
以后 ssh vultr 就行。
7. Vaultwarden 存 Key + 能否免文件登录
Vaultwarden 本体只管存。能“免文件”的是电脑上的 Bitwarden Desktop -> 设置 -> 启用 SSH Agent,解锁后接管 OpenSSH agent,ssh/git 自动拿钥匙签名。
要求:服务端够新(有 SSH Key 条目类型)、客户端够新、只支持 ed25519 OpenSSH 格式,PuTTY 不行。
求稳就:文件放 D 盘 + 私钥全文(含 BEGIN/END)备份到 Vaultwarden SSH Key / Secure Note,外加 ssh-keygen -lf 指纹備查。
8. 给 AI 操作 VPS 的安全流程(别直接给 root key)
原则:一 AI 一 key、一事一权,做完即收回。
1. 建低权用户,不给 root
adduser aiops
usermod -aG sudo aiops
mkdir -p /home/aiops/.ssh && chmod 700 /home/aiops/.ssh
2. 单独给 AI 生成一把,用完就废
# 你本机跑,和你的 vultr-debian13 分开
ssh-keygen -t ed25519 -f ~/.ssh/ai-deploy -C "ai-temp-2026-10"
cat ~/.ssh/ai-deploy.pub
# 放到 VPS 的 aiops 用户下,不是 root 下
echo "ssh-ed25519 AAAAC3... ai-temp-2026-10" > /home/aiops/.ssh/authorized_keys
chown -R aiops:aiops /home/aiops/.ssh && chmod 600 /home/aiops/.ssh/authorized_keys
3. AI 侧这样连
ssh -i ~/.ssh/ai-deploy aiops@你的VultrIP
# 或 config
Host vps-ai
HostName 你的VultrIP
User aiops
IdentityFile ~/.ssh/ai-deploy
4. 限制一下更稳(可选但推荐)
- Vultr 防火墙:22 只放你 + AI 出口 IP
- 别给
PermitRootLogin yes,AI 全程aiops + sudo,要 root 也是sudo -i可审计 - 重要站先快照:Vultr Snapshot 一键
5. 完工立刻回收
# 从 VPS 上删掉那一行即失联,不影响你自己的 key
sed -i '/ai-temp-2026-10/d' /home/aiops/.ssh/authorized_keys
# 人都不要了就连用户一起删
deluser --remove-home aiops
rm ~/.ssh/ai-deploy ~/.ssh/ai-deploy.pub
记住:你的
vultr-debian13私钥永远只在你电脑 + Vaultwarden,AI 用的永远是临时ai-deploy。
9. 锁死自救:Permission denied / 进不去怎么办
先别慌,90% 是这 3 个:公钥贴错、权限太开、改完没 reload。开新窗口别关旧窗口再修。
1. 先看详细报错
# Linux / Win PowerShell 通用
ssh -v -i ~/.ssh/vultr-debian13 root@你的VultrIP
看最后几行:
no such identity=-i路径写错了UNPROTECTED PRIVATE KEY FILE= 私钥权限太开Permission denied (publickey)= 服务端没认出你的公钥,往下查
2. 权限速查表(服务端 + 客户端都要对)
# 服务端 VPS 上
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R root:root ~/.ssh
# 公钥必须一行一个,开头必须是 ssh-ed25519 / ssh-rsa,末尾注释可有可无
cat ~/.ssh/authorized_keys
# 客户端 Linux
chmod 600 ~/.ssh/vultr-debian13
# 客户端 Win
icacls $env:USERPROFILE\.ssh\vultr-debian13 /inheritance:r /grant:r "$env:USERNAME:F"
3. 真锁外面了:Vultr VNC 救
- Vultr 后台 -> Instance -> View Console,进 VNC 登录 root
- 查 key 是否断行/多空格:
cat -A ~/.ssh/authorized_keys
# 正常是一行,以 ssh-ed25519 开头,结尾是 $,不能中间换行
- 查服务端生效配置:
sshd -T | grep -Ei "passwordauth|permitroot|pubkeyauth"
# 要看到 passwordauthentication no / pubkeyauthentication yes
systemctl reload sshd
- 加个临时后门测完即删(有 VNC 才用):
echo "ssh-ed25519 AAAAC3... 备用电脑" >> ~/.ssh/authorized_keys
4. 保命习惯
- 改
sshd_config前先备份:cp /etc/ssh/sshd_config.d/99-secure.conf /root/ - 永远新开一个窗口试登,能进再关旧窗口
- 私钥丢了 = 换锁:把
authorized_keys里那行删了,重新ssh-keygen -f一把新的贴上去
评论区