在服务器管理的日常工作中,能够从任意地点安全地连接到您的CentOS服务器是一项基本且关键的需求,通过开启外网SSH访问,管理员可以突破地理限制,实现高效的远程运维,这个过程并非简单地打开开关,它涉及到一系列严谨的配置和安全考量,任何疏忽都可能导致严重的安全隐患。
下面,我们将系统地讲解如何为您的CentOS服务器安全地配置外网SSH访问。

第一步:确认SSH服务状态
在开始配置之前,我们首先需要确保SSH服务已经在服务器上正常运行。
- 登录服务器:通过本地控制台或现有的远程连接方式登录到您的CentOS系统。
- 检查服务状态:执行以下命令,查看SSH服务(通常使用OpenSSH)是否处于活动状态。
systemctl status sshd
如果看到
active (running)的提示,说明服务正在运行,如果未运行,您需要使用命令systemctl start sshd来启动它,并使用systemctl enable sshd设置其开机自启。
第二步:配置防火墙,开放SSH端口
CentOS默认使用的防火墙是firewalld,它像一道安全门,默认只允许少量服务通过,我们需要为SSH打开这道门。
查看当前开放的SSH服务:
firewall-cmd --list-services
通常情况下,您会看到
ssh已经在列表中,这是因为默认安装时,防火墙已经为内网访问预设了SSH规则。永久开放SSH端口:为了确保规则在重启后依然有效,我们执行永久开放命令。

firewall-cmd --permanent --add-service=ssh
这条命令允许通过SSH默认的22端口进行连接。
重载防火墙配置:使新的永久规则立即生效。
firewall-cmd --reload
完成这一步后,外部的SSH连接请求就已经能够到达您的服务器了。
第三步:强化SSH安全配置(至关重要)
允许外网SSH连接,意味着将您的服务器暴露在公共网络中,仅开放端口是远远不够的,我们必须加固SSH服务本身,编辑SSH的主配置文件是核心环节。
备份配置文件:在进行任何修改之前,创建一个备份是良好的习惯。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
编辑SSH配置文件:

sudo vi /etc/ssh/sshd_config
关键安全配置修改:找到并修改以下参数,如果行首有注释符,请记得删除。
更改默认端口:这是最有效的、避开自动化扫描脚本的方法。
Port 29222 # 建议使用1024到65535之间的一个端口号注意:修改后,客户端连接时需要指定新端口,
ssh -p 29222 user@your-server-ip。禁止root用户直接登录:迫使攻击者必须同时知道一个普通用户名和密码(或密钥),大大增加了攻击难度。
PermitRootLogin no禁用密码认证,强制使用密钥对:这是提升安全性的最有效手段,密码可能被暴力破解,而密钥几乎不可能。
PasswordAuthentication no PubkeyAuthentication yes在应用此设置前,请务必将您的公钥(如
id_rsa.pub添加到服务器对应用户的~/.ssh/authorized_keys文件中,并设置正确的权限(600)。限制用户登录:只允许特定的管理用户进行SSH登录。
AllowUsers your_username admin_user其他安全选项:
Protocol 2 # 只使用SSH协议第2版 PermitEmptyPasswords no # 禁止空密码登录 MaxAuthTries 3 # 限制最大认证尝试次数 ClientAliveInterval 300 # 设置客户端活动检查间隔 ClientAliveCountMax 2 # 超时后断开连接
重启SSH服务:配置修改完成后,需要重启SSH服务以使更改生效。
sudo systemctl restart sshd
重要提醒:在重启
sshd服务后,请务必保持当前连接会话不要退出,同时打开一个新的终端窗口尝试用新的配置(如新端口、密钥登录)进行连接测试,确认新的连接方式成功之后,再关闭当前的会话,这样可以防止因配置错误而将自己锁在服务器门外。
第四步:处理网络环境中的路由器或安全组
如果您的CentOS服务器位于局域网内,通过路由器接入互联网,或者运行在云服务平台(如阿里云、腾讯云等)上,还需要进行额外的配置。
- 局域网环境:需要在路由器上设置端口转发,将公网IP的特定端口(例如您设置的29222)转发到内网服务器的SSH端口。
- 云服务器环境:需要在云服务商的安全组规则中,添加一条入方向规则,允许访问您设置的SSH端口(如29222),协议类型为TCP。
连接测试与日常维护
完成所有配置后,您可以从外网使用以下命令进行连接测试:
ssh -p 你的新端口号 你的用户名@你的服务器公网IP
安全维护是一个持续的过程,建议您定期:
- 检查系统日志(
/var/log/secure)中的SSH登录记录,关注异常尝试。 - 保持系统和OpenSSH软件处于最新状态,及时安装安全更新。
- 定期审查和更新您的SSH密钥。
开启外网SSH是服务器管理中的一项常规操作,但它所承载的安全责任却非同小可,一个稳固的服务器环境,始于每一个细致入微的安全配置,作为管理员,我们不仅要追求功能的实现,更要将“安全第一”的理念贯穿于每一次操作之中,这样才能在享受便捷远程管理的同时,确保我们的数字资产安然无恙。
