Debian系统ssh安全加固,禁止密码登录

把服务器 SSH 从密码登录改成密钥登录,是降低暴力破解风险最有效的一步。
Debian 系统默认允许密码登录,而密码一旦被扫到弱口令,服务器就很容易被入侵。
本文会用最简单的方式,带你在 Debian 系统上完成 SSH 安全加固:生成密钥、上传公钥、关闭密码登录,并确认自己还能正常登录。
整个过程不需要太深的基础,照着命令执行即可。

先搞清楚一件事:密钥登录为什么更安全

SSH 密钥登录用的是非对称加密,客户端持有私钥,服务器只存放公钥。
登录时服务器会通过公钥验证客户端的私钥,私钥本身不会在网络上传输,所以比每次发送密码更安全。
再加上你关闭了密码登录,黑客就无法再通过猜测密码的方式尝试连接,暴力破解基本失效。

需要提前准备的东西只有两样:一个能登录 Debian 服务器的管理员账号(有 sudo 权限),以及你本地的电脑(Windows / macOS / Linux 都可以)。

第一步:在本地生成密钥对

如果你的电脑还没有现成的 SSH 密钥,可以新建一个。
在本地终端(Windows 使用 PowerShell,macOS / Linux 使用终端)执行:

ssh-keygen -t ed25519 -C "你的备注信息"

一路回车即可,默认生成到 ~/.ssh/id_ed25519
如果提示输入 passphrase,可以设置一个保护私钥的密码,也可以直接留空。
生成完成后会在 ~/.ssh/ 下出现两个文件:id_ed25519(私钥,千万不要泄露)和 id_ed25519.pub(公钥,可以放到服务器上)。

如果你的旧服务器只支持 RSA,也可以改用:

ssh-keygen -t rsa -b 4096

第二步:把公钥上传到 Debian 服务器

推荐用 ssh-copy-id 一键上传,这样最不容易出错。
在本地终端执行:

ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP

执行后会提示输入一次服务器密码,输入后公钥就会被追加到服务器上 ~/.ssh/authorized_keys 文件里。

如果服务器不支持 ssh-copy-id,也可以手动创建:先用当前密码登录服务器,然后执行:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

再用本地的 cat id_ed25519.pub 查看公钥内容,复制后粘贴到服务器的 ~/.ssh/authorized_keys 文件里。
注意公钥必须是一行完整文本,不要多空格或换行。

第三步:修改 sshd_config,关闭密码登录

在服务器上执行下面命令编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

找到并修改或新增以下两个关键项:

PubkeyAuthentication yes
PasswordAuthentication no

如果 PasswordAuthentication no 原文被注释,去掉行首的 # 再改为 no
保存后,在重载服务之前,先检查配置是否有语法错误:

sudo sshd -t

没有任何输出表示配置正确。
然后重载 SSH 服务:

sudo systemctl reload ssh

这里用的是 reload,不是 restartreload 不会断开现有连接,你测试失败时还能用当前会话补救。

第四步:验证是否真的只能密钥登录

保持当前 SSH 窗口不要关闭,再新开一个终端窗口,尝试用密钥登录:

ssh 用户名@服务器IP -i ~/.ssh/id_ed25519

如果你没有用 -i 指定私钥,SSH 也会默认读取 ~/.ssh/id_ed25519
只要能成功登入,说明密钥登录正常。
下一步测试密码登录是否已被禁用:重新连接时故意输错密码,如果出现 Permission denied (publickey),就代表服务器已经拒绝密码登录。
看到这个提示,就说明加固生效了。

额外提醒一句:
如果你使用云服务器,
部分云厂商使用 ubuntudebian 等非 root 账号登录,
建议先用 sudo -i 切到 root 再修改,
避免因为 sudo 权限丢失而无法处理配置。

常见坑与排查建议

改完配置文件后连不上,密钥登录也失败:先检查是否在 /etc/ssh/sshd_config 中把 PubkeyAuthentication 不小心设成了 no,或者 authorized_keys 文件存在覆盖规则。
Debian 默认还会读取 /etc/ssh/sshd_config.d/*.conf,如果你在子配置文件里设置了 PasswordAuthentication yes,即使主文件改成 no 也会被子配置覆盖。
检查一下这个目录下的内容,最好把关闭密码登录的配置写在子配置里,或者删除冲突项。

上传公钥后仍然要输密码:确认服务器上 ~/.ssh 目录权限是 700authorized_keys 文件权限是 600,并且文件所在家目录不能对组和其他用户开放写权限。
可以执行:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

然后再次验证登录。

密钥登录成功后想彻底关闭密码登录:你可以在确认密钥登录稳定后,再执行一次 sudo systemctl reload ssh
如果后续不小心搞丢私钥,需要回到云控制台通过 VNC 或救援模式登录修改配置,所以私钥一定要备份好。

完成以上步骤后,你的 Debian 服务器 SSH 已经变成只接受密钥登录。
以后登录服务器不再需要担心密码泄露,暴力破解也会被服务器直接拒绝。
如果你正在处理这台服务器的安全加固,建议先把这四步完整走一遍,再根据实际环境微调配置。
遇到问题时,优先从配置覆盖、文件权限和当前会话备用通道这几个方向排查,能帮你快速找到原因。

分享到:
上一篇
KVM宿主机内核升级注意事项,升级需要重启虚拟机风险
下一篇
KVM qcow2镜像格式转换raw
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意