温馨提示×

CentOS SSH配置文件详解

小樊
47
2025-11-15 18:27:52
栏目: 智能运维

CentOS SSH 配置文件详解

一 核心概念与配置文件位置

  • 服务端配置文件为:/etc/ssh/sshd_config(OpenSSH 服务端守护进程 sshd 的全局配置)。
  • 客户端常用配置为:~/.ssh/config(用户级客户端配置,非本篇重点)。
  • 修改配置后需重启服务:systemctl restart sshd;建议变更前先备份:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • 日志默认路径:/var/log/secure(用于审计登录与认证事件)。

二 常用参数速查表

参数 默认值/示例 作用与建议
Port 22 或 Port 22, 2222 监听端口,可多端口;改端口能降低自动化扫描命中率
ListenAddress 0.0.0.0 / :: 绑定监听地址;多网卡时可仅监听内网口
Protocol 2 仅使用 SSH v2(更安全)
UseDNS yes/no 建议设为 no,避免 DNS 反解析导致连接延迟
LoginGraceTime 2m 登录超时;过短易误断,过长增加被穷举风险
PermitRootLogin yes / prohibit-password / no 建议 prohibit-password(禁密登)或 no(禁 root 直连)
MaxAuthTries 6 认证尝试次数;建议保持默认或更低
MaxSessions 10 每个连接允许的会话数
PubkeyAuthentication yes/no 启用公钥认证(推荐)
AuthorizedKeysFile .ssh/authorized_keys 指定公钥文件路径
PasswordAuthentication yes/no 是否允许密码登录;启用密钥时可关闭
PermitEmptyPasswords no 禁止空口令账户
StrictModes yes 检查用户家目录与 .ssh 权限,建议开启
GatewayPorts no 是否允许端口转发对外暴露
ClientAliveInterval / ClientAliveCountMax 10 / 3 保活探测(如 10 分钟×3 次),自动断开空闲会话
MaxStartups 10:30:100 并发未认证连接限制,抵御暴力连接洪泛
Banner /path/file 认证前显示的警示横幅
GSSAPIAuthentication yes/no 多数内网可关闭以减少延迟
AllowUsers / DenyUsers / AllowGroups / DenyGroups 用户/组白黑名单 精细化访问控制;注意与 Deny 冲突时的生效规则
SyslogFacility / LogLevel AUTHPRIV / INFO 日志设施与级别,便于审计与排错

以上参数与默认值/示例适用于主流 CentOS(7/8/Stream/9)上的 OpenSSH,具体以 sshd_config(5) 与系统实际为准。

三 安全加固与最佳实践

  • 禁用 root 密码登录:设置 PermitRootLogin prohibit-password(或 no),日常以普通用户 + sudo 管理。
  • 优先使用密钥登录:开启 PubkeyAuthentication yes,禁用 PasswordAuthentication yes(在确认密钥可用后再关闭)。
  • 更改默认端口并收敛暴露面:设置 Port 2222(示例),仅在内网或跳板机开放。
  • 限制来源地址:通过 AllowUsers user@192.168.1.0/24AllowGroups 控制;必要时配合防火墙。
  • 会话与暴力防护:设置 LoginGraceTime 2mMaxAuthTries 3–6MaxStartups 10:30:100ClientAliveInterval 300(5 分钟)。
  • 关闭不必要的 GSSAPI:设 GSSAPIAuthentication no(内网通常不需要)。
  • 启用登录横幅:配置 Banner /etc/issue.net,用于合规提示。
  • 保持软件更新:及时更新 openssh-server 与系统补丁。

四 修改端口与防火墙 SELinux 配置步骤

  • 编辑配置:在 /etc/ssh/sshd_config 中设置 Port(可多端口,如 22 与 2222 并存,便于回滚)。
  • SELinux 放行新端口(如 10086):
    • 查看:semanage port -l | grep ssh
    • 添加:semanage port -a -t ssh_port_t -p tcp 10086
  • firewalld 放行:
    • 添加:firewall-cmd --permanent --add-port=10086/tcp
    • 重载:firewall-cmd --reload
  • 验证与重启:
    • 端口占用:ss -lntp | grep 10086netstat -lnp | grep 10086
    • 重启服务:systemctl restart sshd
  • 回滚建议:保留 22 端口一段时间,确认新端口连通后再关闭旧端口。
  • 注意:若未安装 semanage,可先安装对应策略工具包(不同系统包名略有差异)。

五 密钥登录与常见问题

  • 生成密钥对:ssh-keygen -t rsa -b 2048(或 -t ed25519 更安全、更短)。
  • 分发公钥:ssh-copy-id -i ~/.ssh/id_rsa.pub user@host,或手动将公钥追加到远端 ~/.ssh/authorized_keys
  • 目录与权限:
    • 服务端用户家目录权限建议 700,.ssh 目录 700authorized_keys 600
    • 设置:chmod -R 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
  • 客户端连接:指定端口 ssh -p 2222 user@host;文件传输 scp -P 2222 file user@host:/path
  • 常见问题排查:
    • 连接被拒/超时:核对 PortListenAddressfirewalld/SELinux 是否放行。
    • 权限被拒(publickey):检查 ~/.sshauthorized_keys 权限与属主。
    • 日志定位:查看 /var/log/secure 中的 sshd 日志条目。

0