云服务器SSH密钥登录怎么设置?手把手教你从“密码裸奔”到密钥登录
如果你的服务器还在用 root + 密码登录,打开 /var/log/secure 或 auth.log 大概率会看到满屏的 Failed password ——那些来自全球各地的 IP 正拿字典一遍遍试你的密码,一天几万次都不夸张。密码设得再复杂,也扛不住长期被扫描的运气问题。这篇文章就讲一件事:怎么把云服务器的密码登录改成 SSH 密钥登录,从生成密钥到彻底关掉密码登录。适合刚买了一台云服务器、想让自己安心一点的站长和开发者看。全程大概 10 分钟,命令都能直接复制。
第一步:在本地生成一对密钥
Mac 和 Linux 直接开终端,Windows 用 PowerShell、Git Bash 或者 WSL 都行:
ssh-keygen -t ed25519 -C "yourname@example.com"
一路回车就行(建议还是设个密码短语,私钥文件丢了以后别人也只能干瞪眼)。生成后会得到两个文件:
~/.ssh/id_ed25519:私钥,只在本地保存,不要发给任何人,不要上传到服务器~/.ssh/id_ed25519.pub:公钥,这个要放到服务器上去
如果你用的 Windows 图形化工具(Xshell、MobaXterm、FinalShell),它们自带的“新建用户密钥”向导本质也是干这件事,跟着点完,导出公钥内容就行。
第二步:把公钥传到服务器
最省事的做法是 ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服务器IP
它会让你输一次密码,然后自动帮你把公钥写进服务器的 ~/.ssh/authorized_keys。
要是机器上没有 ssh-copy-id(国内某些精简系统确实没有),那就手动来:
# 先看一眼本地公钥内容,整行复制
cat ~/.ssh/id_ed25519.pub
# 登录服务器后执行
mkdir -p ~/.ssh
echo "刚才复制的那一整行" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
另外,国内主流云厂商(阿里云、腾讯云、雨云等)控制台都有“密钥对”功能,创建/导入公钥后绑定到实例,重装或重启时也能生效,省得手动敲命令。
第三步:先别急着关密码登录,先测一次
这一步很关键。另开一个新的终端窗口,用密钥连一次:
ssh -i ~/.ssh/id_ed25519 root@你的服务器IP
能进去、且没让你输服务器密码,才算成功。如果失败,先排查 authorized_keys 权限和 sshd 是否加载了公钥,别急下一步。
第四步:改 sshd 配置,关掉密码登录
编辑配置文件 /etc/ssh/sshd_config(Ubuntu/Debian 是 /etc/ssh/sshd_config,同理):
sudo vim /etc/ssh/sshd_config
找到或直接加入这几行:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
如果你习惯用别的端口,可以顺手改 Port 22,能少一半扫描日志。改完保存,重启 SSH 服务:
sudo systemctl restart sshd # CentOS/RHEL/Alma
sudo systemctl restart ssh # Ubuntu/Debian 一般叫 ssh
重启之后马上再用新终端测一次,确认还能连上。连不上就回控制台的 VNC/救援模式把配置改回去,别慌。
第五步:客户端配置,以后一条命令登录
在本地 ~/.ssh/config 里写一段:
Host myvps
HostName 你的服务器IP
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
之后 ssh myvps 就进去了,不用再记 IP。Xshell 用户则在会话属性里选“Public Key”认证方式,指定私钥文件即可。
避坑提醒
- 没测通就关密码登录,直接把自己锁在门外,只能去控制台开 VNC 救场——别问我是怎么知道的。
- 权限搞错:
.ssh必须是 700、authorized_keys必须是 600,权限太开后 sshd 会直接拒绝公钥登录,报错还很不明显。 - 私钥随便传:私钥拷进网盘、发微信、丢在共享目录,等于把家门钥匙挂门口。丢过就重新生成一对,旧公钥从服务器删掉。
省事一点的方案
如果你不想在配置上折腾太久,可以选控制台密钥管理做得比较顺手的服务商。沐雨云服务器(https://www.myyvps.com)在这方面就比较省心:提供高防云服务器,单机 50–200G DDoS/CC 防御,香港/美国/日本免备案 VPS,采用 BGP/CN2 优质线路和纯 SSD 固态硬盘,2核2G 轻量云 12.8 元/月起,支持支付宝/微信付款。适合个人博客、电商网站、游戏服务器、外贸独立站这类场景,开机器时直接选密钥登录,从第一天就告别密码爆破。
总结
- 本地
ssh-keygen生成密钥对,私钥不外传 - 公钥写入服务器
authorized_keys,权限 700/600 - 新开终端验证密钥能登录,再动手改配置
sshd_config关闭PasswordAuthentication,重启服务- 配好
~/.ssh/config,以后一条命令直达
花十分钟,换来的是一台没人能靠猜密码进得来的服务器,很值。




这一切,似未曾拥有