Linux SSH登录权限控制_SSH安全配置教程

9次阅读

应禁用 root 直接 ssh 登录、修改为非默认端口、仅允许指定用户 / 组登录、启用密钥认证并禁用密码登录。具体包括:设 permitrootlogin no,改 port 为 2222 等,配 allowusers 或 allowgroups,开 pubkeyauthentication yes、关 passwordauthentication no。

Linux SSH 登录权限控制_SSH 安全配置教程

禁止 root 用户直接 SSH 登录

直接允许 root 通过 SSH 远程登录是高风险行为,一旦密码泄露或被暴力破解,攻击者将获得系统最高权限。应修改 SSH 服务配置,禁用 root 登录。

编辑 SSH 主配置文件:
sudo nano /etc/ssh/sshd_config

找到并修改以下行:

  • PermitRootLogin no(推荐设为 no;若必须临时启用,可用 without-password 限制仅密钥登录)
  • 确保 PubkeyAuthentication yes 已开启(为后续密钥登录做准备)

保存后重启服务生效:
sudo systemctl restart sshd

改用非默认端口降低扫描风险

SSH 默认使用 22 端口,大量自动化扫描工具会持续探测该端口。更换为高位端口(如 2222、3333 等)可显著减少无效连接和暴力尝试。

/etc/ssh/sshd_config 中修改:

  • 取消注释并修改 Port 2222(可选多个端口,如 Port 2222nPort 3333
  • 注意:若启用防火墙(如 ufw/firewalld),需同步放行新端口
  • SELinux 启用时,还需运行 sudo semanage port -a -t ssh_port_t -p tcp 2222

配置完成后务必先测试新端口连接成功,再关闭 22 端口或删除原 Port 行,避免锁死。

仅允许指定用户或用户组登录

限制可 SSH 登录的账户范围,能有效缩小攻击面。例如只允许运维组成员或特定管理账号接入。

/etc/ssh/sshd_config 中添加:

  • AllowUsers alice bob@192.168.1.*(允许多个用户,支持 IP 限制)
  • 或使用 AllowGroups sshusers,然后创建组并添加用户:
    sudo groupadd sshusers && sudo usermod -aG sshusers alice
  • 避免同时配置 DenyUsersAllowUsers,以免逻辑冲突;优先使用 Allow* 白名单机制

启用密钥认证并禁用密码登录

密码认证易受暴力破解和重放攻击,而 SSH 密钥对(尤其是带密码的私钥)安全性高得多。建议完成密钥部署后彻底关闭密码登录。

操作步骤:

  • 客户端生成密钥对:ssh-keygen -t ed25519 -C “admin@server”
  • 上传公钥到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server -p 2222
  • 服务端确认 ~/.ssh/authorized_keys 权限为 600,目录为 700
  • sshd_config 中设置:
    PasswordAuthentication no
    ChallengeResponseAuthentication no

务必在断开当前连接前,用新密钥从另一终端测试登录成功,再重载 sshd 服务。

text=ZqhQzanResources