查看服务器SSH连接端口号,最直接的方法是在服务器上执行命令:ss -lntp | grep ssh,或者查看SSH配置文件/etc/ssh/sshd_config中的Port字段,默认端口是22,如果你没有服务器权限,也可以通过扫描工具探测,但更推荐先登录服务器确认。
SSH端口号的前世今生:为什么需要确认它
SSH(安全外壳协议)是运维人员连接服务器的“钥匙孔”,默认情况下,SSH服务监听在22号端口,但出于安全考虑,相当一部分管理员会把端口改到高位端口,比如2222、10022甚至五位数。
这种“非标准”配置带来了一个实际问题:当你需要从本地电脑连接服务器时,如果不清楚端口号,就会反复尝试失败,甚至误以为服务器宕机,更尴尬的场景是:你接手一台前任运维留下的服务器,文档里只写了IP地址,没有标注端口。
行业共识认为,SSH端口是服务器安全管理中最基础但最容易被忽视的配置项,搞懂如何查看它,是排查连接问题的第一步,也是后续做防火墙策略、端口扫描、安全加固的前提。
如何查看服务器SSH连接端口号:四种最常用的方法
登录服务器,读取SSH配置文件
这是最权威的方法,直接问“当事人”最靠谱,SSH服务端的配置通常存放在/etc/ssh/sshd_config文件里,使用任意文本编辑器查看即可。
执行步骤:
cat /etc/ssh/sshd_config | grep -i "^Port"
如果配置文件里启用了Port 2222,你会直接看到输出Port 2222,如果没有任何输出,说明用的是默认配置,也就是22端口。
需要注意一个细节:有些系统会将配置分拆到/etc/ssh/sshd_config.d/目录下的多个文件,此时需要检查这个目录:
grep -i "^Port" /etc/ssh/sshd_config.d/.conf
如果两个地方都定义了Port,Linux下通常以先读取到的配置为准(具体取决于Include指令的位置),为避免误判,建议直接完整查看主配置文件前面的Include行。
使用ss或netstat命令查询实际监听端口
配置文件说的是“计划”,实际监听则要看“结果”,使用ss命令可以直接看到SSH服务正在监听的端口号,这个方法不会受配置语法错误影响。
ss -lntp | grep sshd
输出示例(伪代码,不同系统略有差异):
LISTEN 0 128 0.0.0.0:2222 0.0.0.0: users:(("sshd",pid=1234,fd=3))
重点关注0.0.0:2222和[::]:2222部分,冒号后面的数字就是实际端口,如果输出里同时有0.0.0:22,那说明还是默认端口。
部分最小化安装的服务器可能没有ss命令,此时可以换用传统命令:
netstat -lntp | grep sshd
从客户端侧探测端口(适用于无服务端权限场景)
如果你连不上服务器,或者没有服务器登录权限,可以在自己的电脑上使用端口扫描工具,这里只说两个轻量级思路。
使用telnet批量测试常见端口:
telnet 你的服务器IP 22 telnet 你的服务器IP 2222
如果端口开放,telnet会处于连接状态(黑屏或显示SSH横幅);如果端口关闭,会立刻提示Connection refused,这个方法适合快速验证几个候选端口。
使用nmap做针对性扫描:
nmap -p 1-65535 --open 你的服务器IP
全端口扫描比较耗时,更聪明的做法是扫描高位端口的常见区间,比如-p 1000-30000,nmap会把开放的端口列出来,SSH服务的特征端口(通常显示为ssh服务名)就能识别出来。
业内专家指出:端口探测属于网络侦察行为,只建议在自己拥有或已获授权的服务器上使用,随意扫描他人服务器既不礼貌也不合法。
检查云控制台或堡垒机记录
如果你的服务器是简米云、酷番云、华为云等云厂商购买的,登录云控制台后,在“安全组”或“防火墙”规则里可以看到放行的入方向端口,虽然安全组端口不一定等于SSH实际监听端口,但两者通常保持一致,否则SSH会连不上。
如果你通过堡垒机(跳板机)管理服务器,堡垒机配置的资产页面里会明确展示端口号,这是最省事的方法,连命令都不用敲。
查看SSH端口后,如何验证连接是否正常
确认端口号只是第一步,真正重要的是能顺利连上,这里给出一套简单的验证流程。
- 确认本地到服务器的网络连通性:使用
ping命令测试IP是否可达。 - 确认端口监听状态:在服务器上执行
ss -lntp | grep sshd,确保SSH进程正在运行且监听在目标端口。 - 确认防火墙规则:在服务器上执行
iptables -L -n或firewall-cmd --list-all(CentOS/RHEL),以及云安全组规则,确保目标端口放行。 - 尝试实际连接:在客户端执行
ssh -p 端口号 用户名@服务器IP,观察能否弹出密码或密钥验证提示。
如果端口号正确但连接超时,问题往往出在防火墙或安全组,而不是SSH服务本身,反之,如果提示Connection refused,则可能是SSH服务未运行或端口根本没在监听。
SSH端口相关操作:修改、误判与排查常见误区
修改端口号需要注意什么
在/etc/ssh/sshd_config中修改Port后,必须重启SSH服务才能生效,但千万注意:修改前先确认不会把自己锁在门外,建议做法是:
- 先添加一个新端口并重启SSH服务,确认新端口可以正常连接。
- 再删除旧端口配置,再次重启。
- 全程保持一个可用的终端会话不要退出,方便回滚。
端口号与Frp内网穿透场景
如果你在内网服务器上通过Frp(Fast Reverse Proxy)对外提供SSH访问,那么对外端口往往不是服务器的真实SSH端口,例如内网SSH端口是22,Frp配置里映射到公网端口6000,此时查看服务器本地配置只能看到22,而实际连接必须使用6000,这种情况在远程办公场景中很常见,需要留意区分。
常见误区列表
- 认为“云服务器安全组放行端口就是SSH端口”,实际上安全组端口只是网络层的放行规则,SSH服务本身监听哪个端口由
sshd_config决定。 - 查看
ss输出时只看到:ffff:192.168.1.1:22,就认为端口不是22,IPv6映射地址的显示方式不同,端口号本身不变。 - 修改配置后不检查语法,直接重启,正确做法是先执行
sshd -t验证配置语法。
查看服务器SSH连接端口号常见问题解答
为什么我查看sshd_config文件里Port是22,但就是连不上?
端口号本身没错,问题大概率在网络层,先检查云安全组是否放行22端口,再检查服务器本地防火墙(如ufw、firewalld)是否阻止入站流量,还有可能是SSH服务启动失败,用systemctl status sshd查看服务状态。
服务器SSH端口可以改为域名解析的另一个端口吗?
可以,通过更换端口或者配置端口转发实现,对外无需变化。
如何知道一台服务器SSH端口是否被修改过?
最可靠的方法是在服务器上执行ss -lntp | grep sshd查看实际操作端口,另一种方法是查询历史命令记录history | grep ssh或cat ~/.bash_history,有时候能看到之前的修改痕迹,如果你是通过配置文件继承的场景,别忘了检查/etc/ssh/sshd_config.d/子目录。
查看服务器SSH连接端口号并不复杂:优先登录服务器查看配置文件和监听状态,没有权限时再考虑客户端探测,掌握cat /etc/ssh/sshd_config和ss -lntp | grep sshd这两个组合操作,几乎可以应对所有场景,端口号只是连接服务器的第一道门,后续的安全加固和权限管理同样重要。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/774966.html


