如何加固Digital Ocean Ubuntu 20.04服务器的SSH连接安全?
配置Ubuntu 20.04 SSH实现密钥认证并禁用密码登录
你的核心需求是完全禁用SSH密码登录,强制使用密钥认证——这也是谷歌、脸书这类企业SSH安全体系的基础逻辑(他们在此之上还会叠加IP白名单、硬件密钥等更严格的限制,但个人服务器做到以下几点就足够达到高安全级别)。
1. 先排查密钥部署的问题
你当前用Putty连接仍提示输入密码,大概率是密钥未正确授权或权限配置不符合SSH要求:
- 确认Putty生成的公钥已添加到服务器的
~/.ssh/authorized_keys文件中(没有该文件就手动创建) - 修正目录和文件权限(SSH对权限要求极严,权限过宽会直接拒绝密钥登录):
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown $USER:$USER ~/.ssh ~/.ssh/authorized_keys
2. 修改SSH服务配置,彻底禁用密码登录
编辑SSH主配置文件:
sudo nano /etc/ssh/sshd_config
找到并修改以下参数(被注释的话去掉前面的#):
PasswordAuthentication no(彻底关闭密码登录通道)PubkeyAuthentication yes(确保公钥认证功能开启)ChallengeResponseAuthentication no(禁用挑战响应式密码验证)PermitRootLogin no(如果不需要直接用root账号登录,建议禁用,大幅降低暴力破解风险)- 可选:
Port 2222(把默认22端口改成非标准端口,减少自动化扫描工具的骚扰)
修改完成后,按Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。
3. 关键:先测试再重启服务
绝对不要关闭当前的SSH会话,打开新的Putty窗口用密钥尝试连接:
- 若能正常登录,说明配置有效
- 若登录失败,回到原会话检查配置,避免把自己锁在服务器外
测试通过后,重启SSH服务使配置完全生效:
sudo systemctl restart sshd
额外安全优化建议
- 避免使用
admin、test这类容易被猜测的弱用户名 - 定期更新系统补丁:
sudo apt update && sudo apt upgrade -y - 可在
sshd_config中添加AllowUsers 你的用户名@你的常用IP,仅允许指定IP连接服务器
内容的提问来源于stack exchange,提问作者Sudo Sur
相关产品推荐
相关产品推荐

