CentOS SSH 配置文件详解
一 核心概念与配置文件位置
二 常用参数速查表
| 参数 | 默认值/示例 | 作用与建议 |
|---|---|---|
| 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) 与系统实际为准。
三 安全加固与最佳实践
四 修改端口与防火墙 SELinux 配置步骤
semanage port -l | grep sshsemanage port -a -t ssh_port_t -p tcp 10086firewall-cmd --permanent --add-port=10086/tcpfirewall-cmd --reloadss -lntp | grep 10086 或 netstat -lnp | grep 10086systemctl restart sshd五 密钥登录与常见问题
ssh-keygen -t rsa -b 2048(或 -t ed25519 更安全、更短)。ssh-copy-id -i ~/.ssh/id_rsa.pub user@host,或手动将公钥追加到远端 ~/.ssh/authorized_keys。chmod -R 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keysssh -p 2222 user@host;文件传输 scp -P 2222 file user@host:/path。