SSH配置:开发/测试/生产 三环境标准模板

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/222222/5222256322(22注释)
密码登录✅ 允许❌ 禁止❌ 禁止
密钥登录✅ 允许✅ 强制✅ 强制
root登录✅ 允许🔸 仅密钥❌ 禁止
用户白名单❌ 无✅ 有精确到人
超时时间永不5分钟5分钟
认证次数6次3次2次
日志级别INFOVERBOSEVERBOSE
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

一句话总结

开发:方便第一;测试:接近生产;生产:安全至死
三个配置分开管理,按环境应用,不要混用!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注