在 Linux 服务器运维中,开启 22 端口(即 SSH 服务默认端口)是实现远程管理的首要步骤,核心上文归纳在于:成功开启 22 端口不仅需要安装并启动 OpenSSH 服务,更关键的是要正确配置防火墙规则以及实施必要的安全加固措施,以确保服务器在可访问的同时不被恶意攻击,以下将分层详细解析从服务安装、防火墙配置到安全优化的完整流程。

安装并启动 SSH 服务
SSH(Secure Shell)是 Linux 系统中进行远程管理的标配工具,其默认监听端口为 22,在大多数现代 Linux 发行版中,SSH 服务端软件通常为 OpenSSH Server,首先需要确认系统是否已安装该服务。
对于基于 Debian 或 Ubuntu 的系统,可以使用包管理器进行安装,在终端中执行命令更新源列表并安装服务,安装完成后服务通常会自动启动,若未启动,需手动执行启动命令,对于基于 Red Hat、CentOS 或 Rocky Linux 的系统,则使用 yum 或 dnf 命令进行安装。安装完毕后,务必使用 systemctl 命令设置开机自启,这是保证服务器重启后依然能够远程连接的关键操作。
验证服务是否正常运行,可以通过 netstat 或 ss 命令查看 22 端口是否处于 LISTEN 状态,如果看到 sshd 进程正在监听 0.0.0.0:22 或 :::22,说明服务层已经准备就绪。
配置防火墙放行 22 端口
即便 SSH 服务已经启动,Linux 内核防火墙或云厂商的安全组未放行 22 端口,外部连接依然会被阻断,这是新手最容易忽略的环节,也是导致“连接被拒绝”的主要原因。
在 CentOS 7及以上版本或 Fedora 系统中,默认使用 firewalld 作为防火墙管理工具,管理员需要使用 firewall-cmd 命令将 22 端口加入 public 区域的允许列表。操作时务必加上 –permanent 参数,否则防火墙重启后规则会失效,添加规则后,需要执行重载命令使配置立即生效。
对于 Ubuntu 或 Debian 系统,如果使用的是 UFW(Uncomplicated Firewall),配置则相对简单,只需执行 allow ssh 命令,UFW 会自动读取 /etc/services 文件中的定义,放行 22 端口,配置完成后,建议检查防火墙状态,确认 22 端口对应的规则已正确添加且处于 ALLOW 状态。

如果服务器托管在阿里云、腾讯云或 AWS 等公有云平台,必须在云控制台的安全组策略中单独添加入站规则,允许 TCP 协议的 22 端口访问,云安全组作用于操作系统防火墙之外,是第一道防线。
安全加固与配置优化
直接开启默认的 22 端口虽然方便,但也极易成为自动化脚本攻击的目标,为了提升系统安全性,专业的运维人员不会止步于“开启”,而是会进行深度的安全加固。
建议修改 SSH 配置文件 /etc/ssh/sshd_config。最有效的措施之一是禁用 Root 账户直接登录,将 PermitRootLogin 参数设置为 no,强制攻击者必须先知道一个普通用户名,增加了破解难度,建议更改默认端口号,虽然这属于“隐匿式安全”,但在面对大规模互联网扫描时,能有效减少日志垃圾和暴力破解尝试,修改 Port 参数后,记得同步更新防火墙和云安全组规则。
强制使用密钥认证而非密码认证是提升安全性的核心手段,密码认证容易被撞库或暴力破解,而 SSH 密钥对(公钥和私钥)的加密强度极高,在配置文件中设置 PasswordAuthentication no,即可关闭密码登录功能,生成密钥对后,将公钥上传至服务器的 ~/.ssh/authorized_keys 文件中,确保权限设置为 600 或 400,防止被篡改。
引入 Fail2Ban 等防护工具也是专业解决方案的一部分,Fail2Ban 可以扫描日志文件,自动检测多次失败的登录尝试,并动态修改防火墙规则封禁该 IP 地址,从而防御暴力破解攻击。
常见连接故障排查
在完成上述配置后,如果依然无法连接,需要系统性地排查故障,首先检查 SSH 服务状态,确认服务处于 active (running) 状态,如果服务启动失败,可以使用 journalctl -u sshd 查看详细日志,常见错误如配置文件语法错误、权限问题等都会在这里体现。

检查端口占用情况,22 端口被其他程序占用,SSH 服务将无法绑定,可以使用 lsof -i:22 命令查看占用进程,如果是网络层面的问题,可以使用 telnet 或 nc 工具从客户端测试端口连通性,telnet 不通,问题通常出在防火墙、云安全组或网络链路上。
对于开启了 SELinux 的系统(如 CentOS),SELinux 的策略可能会阻止 SSH 使用非标准端口,如果修改了默认端口,需要使用 semanage 命令更新 SSH 端口上下文,否则即使防火墙放行,连接也会被 SELinux 拦截。
相关问答
Q1:修改了 SSH 默认端口后,连接时应该如何指定端口?
A:在使用 SSH 客户端连接时,需要使用 -p 参数指定端口号,如果将端口修改为 2222,连接命令应为 ssh -p 2222 user@your_server_ip,在使用 SCP 或 SFTP 进行文件传输时,同样需要使用 -P 参数(大写 P)指定端口。
Q2:忘记了 SSH 登录密码且未配置密钥登录,如何找回服务器权限?
A:这种情况必须通过服务器控制台进行操作,如果是云服务器,通常提供“VNC 连接”或“控制台登录”功能,直接通过网页界面登录,如果是物理服务器,需要连接显示器和键盘,登录后,由于拥有 Root 权限,可以直接使用 passwd 命令重置用户密码,或者检查 /etc/ssh/sshd_config 配置文件修正登录限制。
互动话题: 您在日常运维中,是倾向于使用默认的 22 端口配合高强度防护,还是习惯修改为非标准端口来规避扫描?欢迎在评论区分享您的安全策略。















