SSH配置:开发/测试/生产 三环境标准模板
一、开发环境(便捷优先)
# /etc/ssh/sshd_config.d/01-dev.conf
# 开发环境 - 便捷性优先,降低调试门槛
# ---------- 端口 ----------
Port 22
Port 2222 # 备用端口,防止冲突
# ---------- 认证(宽松)----------
PasswordAuthentication yes # 允许密码,方便新人
PubkeyAuthentication yes # 同时支持密钥
PermitRootLogin yes # 允许root,省去sudo
# ---------- 性能 ----------
UseDNS no
GSSAPIAuthentication no
# ---------- 会话 ----------
ClientAliveInterval 0 # 永不超时
ClientAliveCountMax 3
MaxAuthTries 6 # 允许试错6次
# ---------- 日志 ----------
LogLevel INFO
特点:
- ✅ 密码登录(新人友好)
- ✅ root直连(省事)
- ✅ 永不超时(适合长时调试)
- ❌ 不安全,仅限内网/虚拟机
二、测试环境(平衡型)
# /etc/ssh/sshd_config.d/02-test.conf
# 测试环境 - 接近生产,保留一定便利
# ---------- 端口 ----------
Port 22
Port 52222 # 模拟生产高端口
# ---------- 认证(严格)----------
PasswordAuthentication no # 强制密钥
PubkeyAuthentication yes
PermitRootLogin prohibit-password # root仅密钥
# ---------- 访问控制 ----------
AllowUsers jenkins deploy testuser # 明确允许的用户
AllowGroups devops # 允许devops组
# ---------- 性能 ----------
UseDNS no
GSSAPIAuthentication no
# ---------- 会话 ----------
ClientAliveInterval 300 # 5分钟超时
ClientAliveCountMax 2
MaxAuthTries 3
# ---------- 日志 ----------
LogLevel VERBOSE # 详细日志,方便排查
特点:
- ✅ 强制密钥(逼团队适应)
- ✅ root仅密钥(安全折中)
- ✅ 白名单控制(模拟生产)
- ⚠️ 适合预发环境、CI/CD
三、生产环境(安全优先)
# /etc/ssh/sshd_config.d/99-production.conf
# 生产环境 - 安全第一,最小权限
# ---------- 端口(隐蔽)----------
Port 22 # 保留,但建议最终注释掉
Port 56322 # 1万以上非标准端口
# Port 22 # 稳定后注释22端口
# ---------- 认证(极严)----------
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no # 彻底禁止root,强制用sudo用户
AuthenticationMethods publickey # 仅允许密钥,别无他法
# ---------- 访问控制(白名单)----------
AllowUsers ops-zhang ops-li ops-wang # 列出具体人员
AllowGroups sa # 或仅允许系统管理员组
DenyUsers test guest www-data # 明确禁止
# ---------- 会话安全 ----------
ClientAliveInterval 300 # 5分钟
ClientAliveCountMax 0 # 1次探活失败即断
MaxAuthTries 2 # 最多试2次
MaxSessions 3 # 单用户最多3个会话
MaxStartups 5:30:10 # 防DoS: 5个未认证,30%概率拒绝,10上限
# ---------- 加密强化 ----------
Protocol 2
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
# ---------- 性能 ----------
UseDNS no
GSSAPIAuthentication no
# ---------- 日志 ----------
LogLevel VERBOSE # 记录指纹等详细信息
SyslogFacility AUTHPRIV
# ---------- 其他加固 ----------
IgnoreRhosts yes
HostbasedAuthentication no
PermitEmptyPasswords no
X11Forwarding no # 生产禁用X11转发
AllowTcpForwarding no # 除非必要,禁止端口转发
PermitTunnel no
Banner /etc/ssh/banner # 登录警告(法律免责)
特点:
- ✅ 非标准端口(避扫描)
- ✅ 禁止root(必须sudo)
- ✅ 人员白名单(精确到人)
- ✅ 加密强化(降级攻击防护)
- ✅ 会话限制(防资源耗尽)
四、快速部署命令
# 1. 按环境复制配置
ENV="production" # 或 test / dev
# 2. 清理默认配置,使用分片配置
mkdir -p /etc/ssh/sshd_config.d/
echo "Include /etc/ssh/sshd_config.d/*.conf" > /etc/ssh/sshd_config
# 3. 写入对应环境配置
cat > /etc/ssh/sshd_config.d/00-${ENV}.conf << 'EOF'
# 粘贴上面对应环境的完整配置
EOF
# 4. 语法检查
sshd -t
# 5. 平滑重载
systemctl reload sshd
五、三环境配置对比表
| 配置项 | 开发环境 | 测试环境 | 生产环境 |
|---|---|---|---|
| 端口 | 22/2222 | 22/52222 | 56322(22注释) |
| 密码登录 | ✅ 允许 | ❌ 禁止 | ❌ 禁止 |
| 密钥登录 | ✅ 允许 | ✅ 强制 | ✅ 强制 |
| root登录 | ✅ 允许 | 🔸 仅密钥 | ❌ 禁止 |
| 用户白名单 | ❌ 无 | ✅ 有 | ✅ 精确到人 |
| 超时时间 | 永不 | 5分钟 | 5分钟 |
| 认证次数 | 6次 | 3次 | 2次 |
| 日志级别 | INFO | VERBOSE | VERBOSE |
| X11转发 | ✅ 允许 | ❌ 禁止 | ❌ 禁止 |
| 端口转发 | ✅ 允许 | 🔸 按需 | ❌ 禁止 |
六、环境迁移检查清单
开发 → 测试
# 必须检查项
☐ 是否已部署用户的SSH密钥?
☐ 是否关闭密码登录?
☐ root是否改为仅密钥登录?
☐ 是否添加了用户白名单?
测试 → 生产
# 必须检查项
☐ 端口是否改为非标准(>50000)?
☐ 是否彻底禁止root登录?
☐ 是否配置人员精确白名单?
☐ 是否限制会话数/MaxStartups?
☐ 是否禁用端口转发/X11?
☐ 是否启用强加密算法?
☐ 是否添加登录警告Banner?
七、生产环境最终落地配置示例
# /etc/ssh/sshd_config.d/99-production.conf
Port 56322
#Port 22
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AuthenticationMethods publickey
AllowUsers ops-zhang ops-li ops-wang
ClientAliveInterval 300
ClientAliveCountMax 0
MaxAuthTries 2
MaxSessions 2
MaxStartups 2:30:5
UseDNS no
GSSAPIAuthentication no
Protocol 2
X11Forwarding no
AllowTcpForwarding no
LogLevel VERBOSE
Banner /etc/ssh/banner
配合banner文件:
cat > /etc/ssh/banner << 'EOF'
****************************************************************
* WARNING *
* Unauthorized access to this system is prohibited. *
* All activities are logged and monitored. *
* Disconnect immediately if you are not an authorized *
* system administrator. *
****************************************************************
EOF
一句话总结
开发:方便第一;测试:接近生产;生产:安全至死
三个配置分开管理,按环境应用,不要混用!
发表回复