在Linux系统中,SSH(Secure Shell)是一种广泛使用的远程管理协议,默认情况下通过22端口进行通信,出于安全考虑或网络环境需求,管理员常会修改默认端口,掌握查看SSH端口的方法是系统管理的基础技能,本文将详细介绍通过多种方式查看SSH端口配置,涵盖默认端口、修改后的端口、监听状态及连接验证等场景,帮助用户全面掌握端口查看技巧。

通过SSH配置文件查看端口设置
SSH服务的端口配置主要存储在SSH服务的主配置文件中,不同Linux发行版的配置文件路径可能略有差异,但核心内容一致。
查看默认配置文件
对于基于Debian/Ubuntu的系统,SSH服务配置文件通常位于/etc/ssh/sshd_config;基于CentOS/RHEL的系统则位于/etc/ssh/sshd_config,使用cat、less或vim等命令可查看文件内容,
cat /etc/ssh/sshd_config | grep Port
若文件中未明确指定Port指令,则SSH服务会使用默认端口22,若存在Port指令(如Port 2222),则该值即为当前SSH服务的监听端口。
检查配置文件中的注释与默认值
SSH配置文件中可能包含#Port 22这样的注释行,需注意只有去掉且未被注释的Port指令才会生效,若配置文件中存在多个Port指令,最后一个有效指令将覆盖前面的配置,因此需仔细检查文件末尾的端口设置。
使用系统命令实时查看SSH端口监听状态
确认SSH服务是否正在监听指定端口,可通过系统命令查看网络连接状态,这是验证端口实际运行情况的最直接方法。
使用netstat命令查看
netstat是传统的网络工具,可通过-tuln参数显示所有TCP/UDP监听端口,结合grep可筛选SSH相关端口:
netstat -tuln | grep ssh
或直接指定协议类型(SSH默认使用TCP协议):
netstat -tuln | grep :22
若SSH端口被修改为2222,则命令需调整为:
netstat -tuln | grep :2222
命令输出中,Active Internet connections部分会显示监听地址(如0.0.0:22或0.0.1:22)和状态(LISTEN),其中0.0.0表示监听所有网络接口,0.0.1仅本地监听。
使用ss命令查看(推荐)
ss是netstat的替代工具,在性能上更优,尤其在高并发场景下表现更佳,基本用法与netstat类似:
ss -tuln | grep ssh ss -tuln | grep :22
ss命令的输出格式更简洁,且支持更多高级过滤条件,例如通过-p参数查看占用端口的进程ID(PID):
ss -tulpn | grep :22
输出中会显示ssh进程的PID及完整路径,便于进一步排查问题。

通过进程信息验证SSH服务与端口关联
SSH服务的端口监听由sshd进程负责,通过查看进程的详细信息,可确认其是否正确绑定到目标端口。
使用ps命令查看进程
ps -ef | grep sshd
命令会列出所有sshd相关进程,包括主进程和可能的子进程,若SSH服务正在运行,至少会存在一个sshd进程,其启动参数可能包含端口信息(如-p 2222),但更可靠的方式是通过lsof或ss命令进一步确认。
使用lsof命令查看进程端口占用
lsof(list open files)可显示进程打开的文件,包括网络端口,通过以下命令可查看sshd进程占用的端口:
lsof -i -P -n | grep sshd
参数说明:-i仅显示网络相关文件,-P不解析端口号(显示数字形式),-n不解析主机名(显示IP地址),输出结果中会明确显示sshd进程监听的IP和端口,如*:2222 (LISTEN)。
验证SSH端口连通性与远程连接
确认端口配置和监听状态后,还需验证端口是否可被远程客户端访问,避免因防火墙或网络策略导致连接失败。
使用telnet测试端口连通性
telnet <服务器IP> <端口号>
例如测试服务器的22端口:
telnet 192.168.1.100 22
若连接成功,会显示Connected to 192.168.1.100,并返回SSH协议的 banners 信息;若失败,则提示Connection refused(端口未开放)或No route to host(网络不可达)。
使用nc(netcat)测试
nc是更灵活的网络工具,可替代telnet进行端口测试:
nc -zv <服务器IP> <端口号>
参数-z表示扫描模式,-v显示详细信息。
nc -zv 192.168.1.100 2222
成功时会输出Connection to 192.168.1.100 port 2222 [tcp/*] succeeded!。
使用nmap进行端口扫描
nmap是专业的端口扫描工具,可提供更详细的端口状态信息:
nmap <服务器IP> -p <端口号>
例如扫描22端口:

nmap 192.168.1.100 -p 22
输出会显示端口状态(open表示开放)、服务名称(ssh)及版本信息。
常见问题排查
若通过上述方法发现SSH端口异常,可从以下方面排查:
检查SSH服务状态
确保sshd服务正在运行:
systemctl status sshd # CentOS/RHEL service ssh status # Debian/Ubuntu
若未运行,可通过systemctl start sshd或service ssh start启动。
检查防火墙规则
Linux系统防火墙(如iptables、firewalld)可能阻止SSH端口访问,检查iptables规则:
iptables -L -n | grep <端口号>
若未允许,需添加规则并保存,如:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
检查SELinux状态
在CentOS/RHEL系统中,SELinux可能阻止SSH连接,可通过以下命令临时关闭(测试用):
setenforce 0
若关闭后可正常连接,则需调整SELinux策略(如semanage port -a -t ssh_port_t -p tcp 2222)。
查看Linux系统SSH端口的方法多样,从配置文件检查到实时网络状态监控,再到连通性测试,形成了完整的排查链条,管理员需根据实际场景选择合适工具:sshd_config用于确认配置,netstat/ss用于查看监听状态,telnet/nmap用于验证远程访问,掌握这些方法不仅能快速定位端口问题,还能提升SSH服务的安全性和稳定性,为远程管理提供可靠保障。













