CentOS 配置 SSH 服务指南 🔐

CentOS SSH


📋 目录导航


🌟 简介

本指南将帮助您在 CentOS 系统上配置 SSH 服务器,提高安全性和连接稳定性。


🔧 一、安装和更新 SSH 服务

1. 📦 更新系统并安装 OpenSSH 服务器

1
yum -y update && yum install -y openssl openssh-server

2. 📝 查看 SSH 配置文件

1
cat /etc/ssh/sshd_config

⚙️ 二、配置 SSH 服务器

1. ⚡ 修改 SSH 配置文件并重启服务

1
2
3
4
5
# 备份原配置文件并应用修改
sed -i.bak -e '/Port 22/ a Port 22' -e '/PermitRootLogin/ a PermitRootLogin yes' -e '/ClientAliveInterval/ a ClientAliveInterval 10' -e '/ClientAliveCountMax/ a ClientAliveCountMax 999' /etc/ssh/sshd_config

# 重启 SSH 服务并显示服务器 IP
systemctl restart sshd && hostname -I

2. 📋 配置修改说明

配置变更说明:

原配置 修改后配置 说明
#Port 22 Port 22 启用 SSH 端口 22
#PermitRootLogin prohibit-password PermitRootLogin yes 允许 root 用户登录
#ClientAliveInterval 0 ClientAliveInterval 10 每10秒发送一次保活信号
#ClientAliveCountMax 3 ClientAliveCountMax 999 允许999次保活信号无响应

🛡️ 三、增强 SSH 安全性(推荐)

1. 🔒 进一步安全配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 备份当前配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

# 使用更安全的配置
cat >> /etc/ssh/sshd_config << EOF

# 安全增强配置
Protocol 2
MaxAuthTries 3
MaxSessions 10
LoginGraceTime 60
PermitEmptyPasswords no
X11Forwarding no
EOF

# 重启 SSH 服务
systemctl restart sshd

2. 🔥 配置防火墙

1
2
3
4
5
6
# 检查防火墙状态
systemctl status firewalld

# 如果防火墙启用,确保 SSH 端口开放
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

🔍 四、验证配置

1. 📊 检查 SSH 服务状态

1
systemctl status sshd

2. 🧪 测试 SSH 连接

从另一台机器测试连接:

1
ssh username@your_server_ip

3. 👀 查看当前配置

1
2
3
4
5
# 查看生效的 SSH 配置
sshd -T

# 查看监听的端口
netstat -tlnp | grep ssh

💡 五、高级配置选项

1. 🔄 更改默认 SSH 端口(增强安全性)

1
2
3
4
5
6
7
8
9
10
# 修改 SSH 端口为 2222
sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config

# 更新防火墙规则
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

# 重启 SSH
systemctl restart sshd

2. 🔑 使用密钥认证(推荐)

1
2
3
4
5
6
7
8
9
# 在客户端生成密钥
ssh-keygen -t rsa -b 4096

# 将公钥复制到服务器
ssh-copy-id username@your_server_ip

# 在服务器上禁用密码认证
sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

3. 👥 限制用户访问

1
2
3
4
5
6
7
# 只允许特定用户访问
echo "AllowUsers username1 username2" >> /etc/ssh/sshd_config

# 或拒绝特定用户访问
echo "DenyUsers username3" >> /etc/ssh/sshd_config

systemctl restart sshd

🚨 六、故障排除

1. ❌ 如果无法连接

1
2
3
4
5
6
7
8
9
10
11
# 检查 SSH 服务是否运行
systemctl status sshd

# 检查端口是否监听
netstat -tlnp | grep :22

# 检查防火墙设置
firewall-cmd --list-all

# 查看 SSH 日志
tail -f /var/log/secure

2. 🔄 恢复配置

如果配置出错,可以恢复备份:

1
2
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
systemctl restart sshd

📊 七、SSH 配置参数说明

参数 说明 推荐值
Port SSH 监听端口 22 或自定义高端口
PermitRootLogin 是否允许 root 登录 no(更安全)或 yes
ClientAliveInterval 服务器向客户端发送保活消息的时间间隔 30-60
ClientAliveCountMax 服务器在断开连接之前未收到客户端响应的保活消息数量 3-5
MaxAuthTries 最大认证尝试次数 3
PasswordAuthentication 是否允许密码认证 no(推荐使用密钥)
Protocol SSH 协议版本 2

🔒 八、安全最佳实践

  1. 🔑 使用密钥认证:禁用密码认证,使用 SSH 密钥对
  2. 🔄 更改默认端口:减少自动化攻击
  3. 👥 限制用户访问:只允许必要的用户通过 SSH 访问
  4. 🔥 使用防火墙:限制 SSH 端口的访问来源
  5. 🔄 定期更新:保持系统和 SSH 软件包最新
  6. 📝 监控日志:定期检查 SSH 登录尝试
  7. 🛡️ 使用 Fail2ban:安装 Fail2ban 防止暴力破解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装 Fail2ban
yum install -y epel-release
yum install -y fail2ban

# 配置 Fail2ban 保护 SSH
cat > /etc/fail2ban/jail.local << EOF
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 3
bantime = 3600
EOF

systemctl enable fail2ban
systemctl start fail2ban

🚀 通过以上配置,您的 CentOS SSH 服务器将更加安全可靠。记得在修改配置前备份原文件,并在生产环境中谨慎更改安全设置!