Linux SSH 登录权限控制方法

1次阅读

linux ssh登录权限控制核心是精准授权,通过allowusers/denyusers白名单、禁用密码启用密钥认证、match条件化策略、pam访问控制及fail2ban动态封禁实现分层防护。

Linux SSH 登录权限控制方法

Linux 系统中,SSH 登录权限控制的核心在于限制谁可以登录、用什么方式登录、能执行哪些操作。关键不是“禁用 SSH”,而是精准授权——只让必要的人、以必要的方式、访问必要的资源。

限制可登录用户(AllowUsers / DenyUsers)

/etc/ssh/sshd_config 中配置白名单或黑名单,是最直接有效的准入控制方式。

  • 只允许特定用户登录:添加 AllowUsers alice bob@192.168.1.*,支持用户名、用户名@IP 模式,多个用户空格分隔
  • 禁止高危账户登录:添加 DenyUsers root daemon nobody,尤其建议禁用 root 密码登录(但可保留密钥登录)
  • 修改后必须运行 sudo systemctl reload sshd 生效,不要用 restart,避免断连

禁用密码登录,强制使用密钥认证

密码易被爆破,密钥认证更安全且可精细管理。启用前务必确保至少一个密钥已成功登录,避免锁死。

  • 编辑 /etc/ssh/sshd_config,设 PasswordAuthentication noPubkeyAuthentication yes
  • 用户需在自己家目录下正确放置 ~/.ssh/authorized_keys,权限设为 600,目录为 700
  • 可为不同密钥设置命令限制,例如在 authorized_keys 中加前缀:command=”/usr/bin/git-shell -c “$SSH_ORIGINAL_COMMAND””,no-port-forwarding,no-X11-forwarding ssh-rsa AAAA…

按用户或组限制登录方式与环境

通过 Match 块实现条件化策略,适合多角色场景(如运维、开发、审计账号)。

  • 限制某用户仅能从内网登录:Match User monitor
      AllowTcpForwarding no
      X11Forwarding no
      ForceCommand /usr/local/bin/monitor-shell
  • 限制某个组只能用密钥且不可交互:Match Group sftp-only
      PasswordAuthentication no
      ChrootDirectory /sftp/%u
      ForceCommand internal-sftp
  • Match 块必须放在配置文件末尾,且每段以空行分隔

辅助手段:PAM 与 fail2ban 加强防护

SSH 配置是基础,PAM 和 fail2ban 提供运行时增强,堵住配置遗漏或新型攻击路径。

  • 启用 PAM 登录限制:在 /etc/pam.d/sshd 中加入 auth [default=deny] pam_access.so accessfile=/etc/security/access.conf,然后在 access.conf 中定义规则,如 – : ALL EXCEPT wheel : 10.0.0.0/24
  • 部署 fail2ban:安装后启用 sshd jail,自动封禁多次失败登录的 IP,默认 10 分钟,可调为永久或联动防火墙
  • 注意:fail2ban 日志路径需与实际 SSH 日志一致(如 /var/log/auth.log/var/log/secure),否则无法触发
text=ZqhQzanResources