目录
- 第一步:准备工作
- 更新系统
- 检查 SSH 服务是否已安装
- 第二步:安装并启动 SSH 服务
- 安装 OpenSSH 服务器
- 启动并设置开机自启
- 检查服务状态
- 第三步:连接测试
- 从另一台电脑连接
- 常见连接问题排查
- 第四步:SSH 安全加固(非常重要!)
- 修改默认端口
- 禁用 root 用户直接登录
- 使用密钥认证,禁用密码登录
- 更改默认配置文件位置(可选,高级安全)
- 使用 Fail2Ban 防暴力破解(可选,推荐)
- 第五步:常用管理命令
- 重启 SSH 服务
- 查看 SSH 服务状态
- 查看 SSH 服务端口
- 查看 SSH 服务日志
- 停止和禁用 SSH 服务
第一步:准备工作
在开始之前,请确保你有一台已经安装好的 CentOS 系统,并且你拥有 root 或 sudo 权限。

更新系统
将系统所有软件包更新到最新版本,这是一个良好的安全习惯。
# 适用于 CentOS 7 / 8 sudo yum update -y # 或者使用 dnf (CentOS 8 / Rocky Linux / AlmaLinux 更推荐) sudo dnf update -y
检查 SSH 服务是否已安装
现代的 CentOS minimal 安装通常会默认包含 OpenSSH 客户端,但服务器端可能没有,我们可以检查一下。
# 检查是否已安装 openssh-server rpm -qa | grep openssh-server
如果命令返回类似 openssh-server-8.2p1-10.el8.x86_64 的结果,说明已安装,如果没有,请跳到第二步进行安装。
第二步:安装并启动 SSH 服务
如果上一步检查发现没有安装,或者你想确保安装的是最新版本,请执行以下步骤。

安装 OpenSSH 服务器
# 使用 yum (CentOS 7) sudo yum install -y openssh-server # 使用 dnf (CentOS 8 / Rocky Linux / AlmaLinux) sudo dnf install -y openssh-server
启动并设置开机自启
安装完成后,需要启动 SSH 服务,并设置它在系统重启后自动启动。
# 启动 SSH 服务 sudo systemctl start sshd # 设置开机自启 sudo systemctl enable sshd
检查服务状态
确认 SSH 服务正在运行。
sudo systemctl status sshd
你应该会看到绿色的 active (running) 字样,表示服务已成功启动。
第三步:连接测试
你可以从另一台电脑(Windows, macOS, 或 Linux)尝试连接到你的 CentOS 服务器了。

从另一台电脑连接
打开终端(Windows 可以使用 PowerShell 或 PuTTY),使用 ssh 命令。
# 基本语法 ssh username@your_server_ip # 示例 ssh myuser@192.168.1.100
myuser: 你在 CentOS 服务器上的用户名。168.1.100: 你 CentOS 服务器的 IP 地址。
如果是第一次连接,系统会提示你确认服务器的指纹(fingerprint),输入 yes 即可。
然后输入该用户的密码进行登录。
常见连接问题排查
-
连接超时或拒绝连接:
- 检查 CentOS 服务器防火墙是否放行了 SSH 端口(默认为 22),你可以暂时关闭防火墙进行测试(生产环境请勿随意关闭!)。
# 临时关闭防火墙 sudo systemctl stop firewalld
查看防火墙规则
sudo firewall-cmd --list-all
* 确保服务器的 IP 地址正确,并且网络是通的。 - 检查 CentOS 服务器防火墙是否放行了 SSH 端口(默认为 22),你可以暂时关闭防火墙进行测试(生产环境请勿随意关闭!)。
-
Permission denied (publickey,password)**:
- 检查用户名和密码是否正确。
- 如果你后续配置了密钥认证并禁用了密码,这就是正常现象。
第四步:SSH 安全加固(非常重要!)
默认的 SSH 配置存在一些安全风险,强烈建议进行以下加固操作。
修改默认端口
将 SSH 端口从默认的 22 修改为一个不为大众所知的端口号(2222),可以避免大量自动化扫描攻击。
-
编辑配置文件:
sudo vi /etc/ssh/sshd_config
找到这一行:
#Port 22取消注释,并将其修改为:
Port 2222提示:
vi编辑器的基本用法:按i进入编辑模式,修改后按Esc退出编辑模式,然后输入wq保存并退出。 -
重启 SSH 服务使配置生效:
sudo systemctl restart sshd
-
放行新端口: 你需要更新防火墙规则,允许新的端口通过。
# 添加永久规则 sudo firewall-cmd --permanent --add-port=2222/tcp # 重新加载防火墙 sudo firewall-cmd --reload # 验证新规则是否生效 sudo firewall-cmd --list-all
-
连接测试: 使用
-p参数指定新端口进行连接。ssh myuser@192.168.1.100 -p 2222
禁用 root 用户直接登录
直接使用 root 用户通过 SSH 登录是极其危险的,应该为普通用户配置 sudo 权限,然后通过普通用户登录,再 su 或 sudo 到 root。
-
编辑配置文件:
sudo vi /etc/ssh/sshd_config
找到这一行:
#PermitRootLogin yes修改为:
PermitRootLogin no -
重启 SSH 服务:
sudo systemctl restart sshd
现在将无法直接使用
root用户和密码登录 SSH。
使用密钥认证,禁用密码登录
这是目前最有效的 SSH 安全措施,通过密钥对进行认证,即使密码被破解也无法登录。
-
在客户端电脑上生成密钥对: 如果你还没有 SSH 密钥,在你的客户端电脑上运行以下命令(通常在
~/.ssh/目录下):# 一路按回车即可,使用默认设置 ssh-keygen -t rsa -b 4096
这会生成两个文件:
id_rsa(私钥,绝对不能泄露!)和id_rsa.pub(公钥)。 -
将公钥复制到服务器: 使用
ssh-copy-id命令可以轻松完成。# -i 指定你的公钥文件,-p 指定服务器SSH端口 ssh-copy-id -i ~/.ssh/id_rsa.pub myuser@192.168.1.100 -p 2222
输入
myuser的密码后,公钥就会被追加到服务器~/.ssh/authorized_keys文件中。 -
在服务器上禁用密码登录: 再次编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config
找到并修改以下两行:
#PasswordAuthentication yes #ChallengeResponseAuthentication yes将它们修改为:
PasswordAuthentication no ChallengeResponseAuthentication no -
重启 SSH 服务:
sudo systemctl restart sshd
重要提醒:在禁用密码登录之前,请100%确认你的密钥认证已经成功工作!否则,你将被锁定在服务器之外,需要通过控制台(如 VNC)才能恢复。
使用 Fail2Ban 防暴力破解(可选,推荐)
Fail2Ban 是一个防止入侵的软件,它会通过监控日志文件(如 SSH 日志),发现失败的登录尝试后,自动调用防火墙规则来封禁恶意 IP。
-
安装 Fail2Ban:
sudo dnf install -y fail2ban
-
创建配置文件: 默认配置文件在
/etc/fail2ban/jail.local,我们可以复制一个模板来修改。sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
-
编辑配置:
sudo vi /etc/fail2ban/jail.local
找到
[sshd]部分,进行如下修改(这是最基础的配置):[sshd] enabled = true port = 2222 # 修改为你的SSH端口 filter = sshd logpath = /var/log/secure maxretry = 5 # 最大尝试次数 bantime = 1h # 封禁时间 -
启动并设置开机自启 Fail2Ban:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
第五步:常用管理命令
-
重启 SSH 服务 (在修改配置文件后常用)
sudo systemctl restart sshd
-
查看 SSH 服务状态
sudo systemctl status sshd
-
查看 SSH 服务端口
sudo ss -tulnp | grep sshd
-
查看 SSH 服务日志
# 查看实时日志 sudo tail -f /var/log/secure
-
停止和禁用 SSH 服务 (谨慎操作)
# 停止服务 sudo systemctl stop sshd # 禁用开机自启 sudo systemctl disable sshd
通过以上步骤,你已经成功搭建了一个相对安全的 CentOS SSH 服务器,核心要点是:
- 安装并启动
sshd服务。 - 修改默认端口 以避免自动化扫描。
- 禁用
root直接登录 以减少攻击面。 - 启用密钥认证,禁用密码登录,这是最关键的安全措施。
- 使用
Fail2Ban自动封禁恶意 IP。
遵循这些最佳实践,可以极大地提高你服务器的安全性。
