凌峰创科服务平台

CentOS7如何配置SSH服务器?

在 CentOS 7 中,SSH 服务器软件包是 OpenSSH,我们将完成以下步骤:

CentOS7如何配置SSH服务器?-图1
(图片来源网络,侵删)
  1. 检查并安装 OpenSSH 服务器
  2. 启动并设置开机自启 SSH 服务
  3. 核心安全配置(修改 sshd_config 文件)
  4. 配置防火墙,允许 SSH 流量
  5. 连接测试
  6. 进阶安全建议(可选但强烈推荐)

第 1 步:检查并安装 OpenSSH 服务器

检查您的系统是否已经安装了 OpenSSH 服务器。

# 检查是否已安装
rpm -qa | grep openssh-server

如果看到类似 openssh-server-7.4p1-21.el7.x86_64 的输出,说明已经安装,如果没有输出或需要升级,请执行以下命令进行安装:

# 使用 yum 安装(推荐)
sudo yum install -y openssh-server
# 或者使用 dnf 安装(适用于较新的 CentOS 7 版本或未来版本)
# sudo dnf install -y openssh-server

安装完成后,系统会自动创建 SSH 的配置文件,位于 /etc/ssh/sshd_config


第 2 步:启动并设置开机自启 SSH 服务

安装完成后,SSH 服务默认可能是未启动的,我们需要手动启动它,并设置它在系统重启后自动运行。

CentOS7如何配置SSH服务器?-图2
(图片来源网络,侵删)
# 启动 SSH 服务
sudo systemctl start sshd
# 设置 SSH 服务开机自启
sudo systemctl enable sshd

您可以使用以下命令检查 SSH 服务的当前状态:

# 查看服务状态
sudo systemctl status sshd

如果看到绿色的 active (running) 字样,表示服务正在正常运行。


第 3 步:核心安全配置(修改 sshd_config 文件)

这是最关键的一步,我们需要编辑 SSH 的主配置文件 /etc/ssh/sshd_config 来增强安全性。

警告: 在修改配置文件之前,强烈建议先备份一份原始文件

CentOS7如何配置SSH服务器?-图3
(图片来源网络,侵删)
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

然后使用您喜欢的文本编辑器(如 vinano)打开文件:

sudo vi /etc/ssh/sshd_config

以下是几个重要的安全配置项及其说明:

配置项 默认值 推荐值 说明
Port 22 22 或自定义端口(如 2222 修改默认端口可以防止自动化攻击脚本,如果修改,请确保防火墙规则也同步更新。
PermitRootLogin yes no 强烈建议禁用,禁止 root 用户直接通过 SSH 登录,应使用普通用户登录后 susudo 提权。
PasswordAuthentication yes no 强烈建议禁用,改为只允许密钥对认证,这是最安全的认证方式。
PubkeyAuthentication yes yes 确保 yes,以启用密钥对认证。
PermitEmptyPasswords no no 确保为 no,禁止空密码登录。
AllowUsers (无) 允许的用户名 只允许指定用户列表通过 SSH 登录,AllowUsers user1 user2
DenyUsers (无) 禁止的用户名 拒绝指定用户列表通过 SSH 登录。

示例配置:

# 修改端口为 2222 (可选)
Port 2222
# 禁止 root 用户直接登录
PermitRootLogin no
# 只允许密钥对认证,禁止密码登录 (最安全)
PasswordAuthentication no
PubkeyAuthentication yes
# 只允许用户 'centos' 和 'devops' 登录 (可选)
AllowUsers centos devops

修改完成后保存文件(在 vi 中是 wq),然后重启 SSH 服务使配置生效:

sudo systemctl restart sshd

第 4 步:配置防火墙,允许 SSH 流量

CentOS 7 默认使用 firewalld 防火墙,我们需要为 SSH 服务添加一个防火墙规则。

# 永久添加 SSH 服务到防火墙规则 (firewalld 会自动处理 22 端口)
sudo firewall-cmd --permanent --add-service=ssh
# 如果您在第 3 步修改了 SSH 端口 (例如改为了 2222),则需要手动添加该端口
# sudo firewall-cmd --permanent --add-port=2222/tcp
# 重新加载防火墙规则,使更改生效
sudo firewall-cmd --reload

您可以检查防火墙规则是否已成功添加:

sudo firewall-cmd --list-all

您应该能在输出中看到 ssh (或自定义端口) 已被允许。


第 5 步:连接测试

您可以从另一台计算机尝试连接到您的 CentOS 7 服务器。

您设置了密钥对认证(推荐)

如果您在第 3 步禁用了密码登录,您需要使用密钥对。

# 基本语法
ssh -i /path/to/your/private_key username@your_server_ip
# 示例
ssh -i ~/.ssh/my_centos_key centos@192.168.1.100

您仍然使用密码认证

如果您暂时没有设置密钥对,保留了密码登录。

# 基本语法
ssh username@your_server_ip
# 示例
ssh centos@192.168.1.100

如果连接成功,说明您的 SSH 服务器配置基本完成。


第 6 步:进阶安全建议(可选但强烈推荐)

为了进一步提升安全性,您可以考虑以下措施:

使用 SSH 密钥对认证

这是比密码安全得多的方式。

  • 在客户端生成密钥对(如果还没有的话):

    ssh-keygen -t rsa -b 4096

    按照提示操作,通常直接按回车键即可,这会在 ~/.ssh/ 目录下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)。

  • 将公钥复制到服务器

    # 基本语法
    ssh-copy-id -i ~/.ssh/id_rsa.pub username@your_server_ip
    # 示例
    ssh-copy-id -i ~/.ssh/id_rsa.pub centos@192.168.1.100

    此命令会自动将公钥添加到服务器上的 ~/.ssh/authorized_keys 文件中,并设置正确的权限。

  • 测试密钥登录:关闭本地终端,重新连接,此时应该可以直接登录,而无需输入密码。

禁用密码登录(在密钥配置好后)

确认密钥登录一切正常后,回到第 3 步,将 sshd_config 文件中的 PasswordAuthentication 设置为 no,然后重启 SSH 服务。

# 编辑配置文件
sudo vi /etc/ssh/sshd_config
# 修改此项为 no
PasswordAuthentication no
# 重启服务
sudo systemctl restart sshd

即使攻击者知道了你的用户名和密码,也无法登录服务器。

使用 Fail2ban 防止暴力破解

Fail2ban 是一个防止入侵的工具,它会监控日志文件(如 SSH 的登录日志),并在检测到多次失败尝试后,自动通过防火墙封禁攻击者的 IP 地址。

# 安装 Fail2ban
sudo yum install -y fail2ban
# 复制并编辑配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑主配置文件
sudo vi /etc/fail2ban/jail.local

jail.local 文件中,找到 [sshd] 部分,进行如下配置:

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600 # 封禁 1 小时 (单位: 秒)

配置完成后,启动并设置 fail2ban 开机自启:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

故障排除

如果连接失败,可以检查以下日志:

  • SSH 服务日志:

    sudo tail -f /var/log/secure

    这会显示所有 SSH 的登录尝试和错误信息,是排查问题的首选。

  • 系统日志:

    sudo journalctl -u sshd -f

通过以上步骤,您就可以在 CentOS 7 上配置一个既功能完善又安全可靠的 SSH 服务器了。

分享:
扫描分享到社交APP
上一篇
下一篇