linux ssh加固核心是“关掉密码、用好密钥、缩窄入口”,需组合实施:改非标端口(如4321)、强制密钥认证(pubkeyauthentication yes且passwordauthentication no)、禁止root直连(permitrootlogin no)、创建sudo普通用户,并规范生成部署ed25519等强密钥。

Linux SSH加固核心是“关掉密码、用好密钥、缩窄入口”,不是只改一个配置就能高枕无忧。重点在于组合策略:端口非标 + 密钥强制 + root禁登 + 权限收紧。
改默认端口,避开扫描盯梢
22端口是暴力破解的头号目标。编辑 /etc/ssh/sshd_config,找到并修改:
- Port 4321(替换成 1024–65535 范围内未被占用的端口)
- 保存后执行 sudo systemctl restart ssh 生效
- 别忘了同步更新防火墙规则,比如 UFW: sudo ufw allow 4321/tcp
禁用密码登录,只认私钥
密码认证容易被爆破,必须关闭。在 /etc/ssh/sshd_config 中确认以下两行:
- PubkeyAuthentication yes(确保开启公钥认证)
- PasswordAuthentication no(彻底禁用密码登录)
改完重启服务。注意:务必先用密钥成功登录一次再禁密码,否则可能锁死自己。
禁止root远程直连,用普通用户提权
直接允许 root 登录等于给攻击者递钥匙。在配置文件中设为:
- PermitRootLogin no
- 创建专用管理账户(如 admin),用 useradd -m -s /bin/bash admin 创建
- 把该用户加入 sudo 组:usermod -aG sudo admin
密钥生成与部署要规范
本地生成强密钥(推荐 4096 位 RSA 或 Ed25519),命令示例:
- ssh-keygen -t ed25519 -C “admin@myserver”(更安全更快)
- 公钥传到服务器:ssh-copy-id -p 4321 admin@192.168.1.100
- 服务器端检查 ~/.ssh/authorized_keys 权限是否为 600,目录 .ssh 是否为 700
私钥文件切勿泄露,windows 用户建议用 OpenSSH 内置工具或 PuTTYgen 生成,避免第三方客户端明文存密。