服务器系统安装后,ssh 服务通常由 sshd 守护进程提供,默认配置即可满足基础远程登录需求。若需加固安全或调整行为,应修改 /etc/ssh/sshd_config 文件中的关键参数,如禁用密码登录、限制 root 访问或更改监听端口,随后重启服务使配置生效。

如何禁用密码登录并启用密钥认证
要禁用密码登录并启用密钥认证,需在 sshd_config 中将 PasswordAuthentication 设为 no,并确保 PubkeyAuthentication 为 yes。此操作将强制客户端使用私钥进行身份验证,显著提升安全性。修改后必须重启 sshd 服务,否则旧配置仍会生效。

# /etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes # 重启服务 systemctl restart sshd
预期结果:客户端尝试使用密码登录时将收到 Permission denied 错误,而持有对应公钥的客户端可正常登录。若未正确部署公钥,用户将被锁定在系统外,因此务必先测试密钥连接再关闭密码认证。
如何限制特定用户或组访问 SSH
要限制特定用户或组访问 SSH,可使用 AllowUsers 或 AllowGroups 指令在 sshd_config 中白名单指定允许登录的用户或组。例如,设置 AllowUsers admin deploy 仅允许这两个用户通过 SSH 连接。未被列出的用户即使拥有有效凭据也会被拒绝。此配置同样需要重启 sshd 服务才能生效。

# /etc/ssh/sshd_config AllowUsers admin deploy AllowGroups sudo # 重启服务 systemctl restart sshd
预期结果:只有 admin 和 deploy 用户,以及属于 sudo 组的成员可以成功建立 SSH 会话。其他所有用户,包括 root(除非显式列出),都将收到 Access denied 响应。注意,AllowUsers 和 AllowGroups 是互斥的,同时使用时以最后加载的为准,建议只选其一以避免冲突。
当 AllowUsers 列表为空时会发生什么
当 AllowUsers 列表为空或未定义时,SSH 服务不会自动拒绝所有用户,而是回退到基于系统账户和密码/密钥认证的默认行为。这意味着任何拥有有效系统账户且能通过身份验证的用户仍可登录。若希望实现“默认拒绝”,必须显式列出至少一个允许的用户,或使用 DenyUsers/DenyGroups 配合 PermitRootLogin no 等策略进行精细控制。空列表不等于黑名单,而是无过滤状态。











