查看服务器SSH端口号的核心在于结合配置文件读取与网络监听状态查询。 在Linux服务器中,SSH服务默认使用TCP协议的22号端口,但出于安全考虑,管理员通常会修改此默认值,要准确获取当前正在使用的SSH端口号,最权威的方法是查看SSH守护进程的配置文件,并通过网络状态命令进行交叉验证,以确保配置已生效且服务正在正常监听。

通过SSH配置文件精准定位
查看SSH端口号最直接、最准确的方式是读取SSH服务端的配置文件,在绝大多数Linux发行版(如CentOS、Ubuntu、Debian)中,SSH服务的配置文件通常存放在 /etc/ssh/ 目录下,文件名为 sshd_config。
要查看端口信息,可以使用 grep 命令快速筛选出包含“Port”关键字的行,执行以下命令:
grep -i "Port" /etc/ssh/sshd_config
输出结果解读:
如果输出结果为 #Port 22,且行首以 号开头,这表示该行被注释掉了,SSH服务将使用默认的22端口。
如果输出结果为 Port 2222,且没有 号,则表示管理员已将SSH端口修改为2222。
需要注意的是,配置文件中可能存在多个Port指令,或者Port指令被Include指令包含的其他配置文件覆盖,因此单纯查看文件有时需要结合上下文判断。
利用网络状态命令实时验证
虽然配置文件定义了SSH端口,但只有重启SSH服务后,新的端口配置才会生效,为了确认当前系统实际正在监听的SSH端口,必须使用网络状态查询命令,这是验证服务运行状态的关键步骤,也是排查连接失败问题的首选手段。
使用 ss 命令(推荐):
ss 是现代Linux系统(如CentOS 7+、RHEL 8+)中用于替代 netstat 的工具,它能够更快速、更详细地显示套接字信息,执行以下命令可以查看所有监听状态的TCP端口:
ss -tlnp | grep sshd
参数解释:-t 表示TCP协议,-l 表示监听状态,-n 表示以数字形式显示端口号(不解析服务名),-p 表示显示监听该端口的进程名,通过输出结果,你可以直接看到 sshd 进程正在监听的具体端口号(0.0.0:2222)。
使用 netstat 命令:
对于较旧的系统或习惯使用传统工具的管理员,netstat 依然是有效的选择,执行命令如下:

netstat -tlnp | grep sshd
使用 lsof 命令:
lsof (List Open Files) 是一个强大的系统监控工具,可以查看当前系统打开的文件和网络端口,执行以下命令:
lsof -i -P | grep sshd
-i 参数表示显示网络连接,-P 参数表示禁止将端口号转换为服务名(即显示数字端口),这种方法在排查端口被占用或确认服务是否启动时非常直观。
Windows Server环境下的查看方式
在Windows Server操作系统上,如果使用的是OpenSSH Server服务,查看端口的方式与Linux有所不同,主要依赖于PowerShell命令或注册表查询。
使用PowerShell查询:
可以通过查询 Get-NetTCPConnection 结合进程信息来找到SSH端口,首先找到 sshd 进程的ID,然后筛选其监听的端口。
Get-NetTCPConnection -State Listen -OwningProcess (Get-Process sshd).Id
查看配置文件:
Windows版的OpenSSH通常将配置文件放在 C:\ProgramData\ssh\sshd_config,可以使用记事本打开该文件,查找 Port 关键字,其逻辑与Linux版本完全一致。
常见差异分析与安全加固建议
在实际运维中,经常出现配置文件修改了端口,但网络连接依然失败的情况,这通常涉及以下几个专业层面的原因,需要管理员具备独立排查的能力。
服务未重启:
修改 /etc/ssh/sshd_config 文件后,必须重启SSH服务才能使配置生效,在systemd系统下,应执行 systemctl restart sshd,如果只修改了配置而未重启,ss 或 netstat 查看到的依然是旧端口。

防火墙与SELinux限制:
这是新手最容易忽略的环节,修改SSH端口后,必须在防火墙(如 firewalld 或 iptables)中放行新的端口,否则外部无法连接,在firewalld中执行 firewall-cmd --permanent --add-port=2222/tcp --zone=public 并重载防火墙。
如果开启了SELinux,还需要将新端口加入SSH的上下文端口范围,否则服务无法绑定该端口,可以使用 semanage port -a -t ssh_port_t -p tcp 2222 命令进行添加。
端口扫描验证:
如果无法登录服务器内部查看,从外部使用 nmap 或 nc 工具进行端口扫描也是一种有效的验证手段,执行 nmap -p 1-65535 <服务器IP>,可以探测出服务器对外开放的所有端口,从中识别出可能的SSH端口(通常SSH服务特征明显)。
相关问答
Q1:修改SSH端口后无法连接,提示Connection Refused,该怎么办?
A: 首先应使用 ss -tlnp | grep sshd 确认SSH服务是否已在监听新端口,如果服务未监听新端口,请检查配置文件语法并重启服务,如果服务已监听,问题通常出在防火墙拦截或安全组策略上,请检查服务器本地防火墙(如firewalld、iptables)以及云服务商控制台的安全组设置,确保新端口已放行入站流量,不要忘记检查SELinux是否阻止了端口绑定。
Q2:如何在不登录服务器的情况下,快速扫描出目标服务器的SSH端口?
A: 可以使用 nmap 工具进行全端口扫描或服务版本探测,执行命令 nmap -sV -p 1-65535 <目标IP>,nmap 会识别开放端口的服务指纹,通常能准确识别出SSH服务及其对应的端口号,如果为了隐蔽性,也可以使用 nc (netcat) 对常见端口进行遍历连接测试,根据Banner信息判断是否为SSH服务。
能帮助您准确查看和管理服务器的SSH端口,如果您在具体操作中遇到其他问题,欢迎在评论区分享您的错误日志或操作步骤,我们将为您提供进一步的排查建议。


















