远程连接Linux服务器端口号,核心思路就是三步:先确认端口在监听,再确保防火墙和安全组放行,最后用客户端指定端口去连。
很多新手一上来就敲 ssh root@服务器IP,结果卡在半路,搞不清楚到底是服务没起来,还是端口被墙了,其实端口号这个东西,说白了就是服务器上每个服务的大门,你想远程连哪个服务,就得走对它那扇门,下面我把整个流程拆开揉碎讲清楚,纯实操,照着做就行。
linux服务器端口号怎么查?先分清这几种常见端口
先别急着查命令,你得知道哪些端口是常用的,根据服务类型的不同,端口号是有约定的,业内共识认为,常用的这几个你得记在心里:
- 22:SSH远程管理端口,默认就是它
- 80 / 443:Web服务端口,一个走HTTP,一个走HTTPS
- 3306:MySQL数据库端口
- 6379:Redis缓存服务端口
- 8080:很多Java应用和Tomcat默认端口
我这里说的是端口号怎么查,但你也要明白,服务可以自定义端口,比如把SSH改成2222,Web改成8080,完全合法,所以远程连接前,先搞清楚目标服务到底用的哪个端口。
监听地址:是0.0.0.0还是127.0.0.1
除了端口号,还要看监听地址,如果服务只绑定了 0.0.1,那它只能本机访问,外部怎么连都白搭,想要远程连,服务必须监听在 0.0.0 或具体的公网IP上,这一点很多人会忽略,我特地提一句。
登录服务器后,用三个命令确认端口状态
既然已经登录到Linux服务器上,那查端口就非常简单了,下面三个命令你至少会两个,足够了。
netstat:最经典,但逐渐被替代
netstat -tlnp
这条命令会列出所有监听中的TCP端口和对应的进程。-t 表示TCP,-l 表示监听状态,-n 用数字显示IP和端口,-p 显示进程PID和名称,如果你机器上没装netstat,那就用 yum install net-tools 或 apt install net-tools
装一下。
ss:现代系统推荐,速度快
ss -tlnp
ss 是 netstat 的升级版,输出格式差不多,但性能更好,在CentOS 7以上的系统里,ss 基本是默认有的,你重点看 State 为 LISTEN 的行,那就是正在监听的服务。
lsof:按进程反向查端口
lsof -i :3306
这条命令用来查指定端口被哪个进程占用,非常实用,比如你想连MySQL,但发现3306端口不通,先跑一下这条命令,看看有没有进程在监听,如果是空的,那说明MySQL压根没起来。
ssh远程连接指定端口命令的完整写法
这是最常用的一种远程连接场景,默认SSH走22端口,但很多服务器为了安全会改成其他端口,这时候你就得用 -p 参数指定。
基本语法
ssh -p 22026 root@192.168.1.100
-p 后面跟的端口号,紧接着是用户名和IP,比如你改了SSH端口为22026,那上面这条命令就是标准写法,注意,-p 是大写,小写 -p 在某些SSH版本里代表别的含义,容易踩坑。
修改SSH默认端口的方法
如果你想自定义端口,打开配置文件:
vim /etc/ssh/sshd_config
找到 #Port 22 这一行,改成:
Port 22026
然后重启SSH服务:
systemctl restart sshd
重启后千万注意:在当前会话不要断开,先新开一个终端用 ssh -p 22026 试一下,确认能连上再断开老会话,否则你可能把唯一的入口给封死。
连接失败时的常见报错
Connection refused:端口拒连,说明服务没在监听,或者防火墙直接DROP了。Connection timed out:超时,大概率是网络不通,或者云服务器安全组没放行。No route to host:找不到路由,可能是IP地址错误或主机离线。
这里其实就是“远程连接linux服务器端口不通”的典型症状,遇到这些报错别慌,按下一节的方法逐层排查。
linux开放端口命令:防火墙和安全组一起查
很多时候端口查出来是监听的,但远程就是连不上,问题出在防火墙或云平台的安全组上,Linux系统里常见的防火墙工具有三种,你根据自己用的系统选。
firewalld(CentOS/RHEL 7+)
firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload
第一条命令把8080端口永久放行,第二条让配置立即生效,如果只想临时放行,去掉 --permanent 就行,但服务器重启后就会失效。
ufw(Ubuntu/Debian)
ufw allow 8080/tcp ufw reload
更简单直接,如果以前没启用ufw,那默认是不拦截的,你只要确认 ufw status 显示 inactive 或者规则里放行了即可。
iptables(老系统)
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT service iptables save
注意,纯iptables的配置修改后是不会自动保存的,得手动执行保存命令,不然重启就丢了。
云服务器安全组:最容易被新手忽略
现在绝大多数服务器都是云服务器,简米云、酷番云、华为云都要求你同时在控制台的安全组里放行端口,安全组的优先级比服务器内部防火墙更高,就算你Linux防火墙全关了,安全组没放行也一样连不上。
操作流程一般是:登录云厂商控制台 → 找到你的服务器实例 → 进入安全组规则 → 添加入方向规则 → 填TCP端口和来源IP,来源IP建议填你的固定公网IP或IP段,别直接填 0.0.0/0,风险太大。
远程连接linux服务器端口不通?按这四步排查
当你遇到端口不通,或者想验证自己的配置到底有没有生效,就按下面的顺序逐层检查。
第一步:确认服务在服务器本地监听
ss -tlnp | grep 8080
如果输出为空,服务没起来,那先启动服务,如果输出显示 0.0.1:8080,那说明只监听本地,改成 0.0.0:8080 再重启。
第二步:检查服务器本地防火墙
systemctl status firewalld iptables -L -n ufw status
视系统而定,看看有没有关于目标端口的规则,如果不会看,直接临时关掉防火墙测试是最快的办法,但生产环境下不建议一直关着。
第三步:检查云平台安全组
这一步只能在云控制台操作,找到安全组列表,确认入方向规则里有没有TCP端口那条,安全组是状态化的,出方向默认放行,所以只需关注入方向。
第四步:用工具测试端口通不通
在本地电脑上用命令行测试:
telnet 服务器IP 8080
或者:
nc -vz 服务器IP 8080
如果提示 Connected,说明端口通了,问题在应用层,如果提示 Connection refused 或超时,那还得回头查防火墙或安全组。
关于远程连接linux服务器端口号的常见问题
端口被占用怎么办?
用 lsof -i :端口号 查看占用进程的PID,然后用 kill -9 PID 结束它,或者用 fuser -k 端口号/tcp 一条命令搞定,结束进程前先确认是什么程序,别误杀系统服务。
用什么工具主动扫描端口?
推荐 nmap,本地执行 nmap -p 8080 服务器IP 就能看到端口状态。nc 也可以做简单的端口探测,注意,扫描自己的服务器没问题,但未经授权扫描别人服务器涉嫌违规,别乱用。
修改SSH端口后连不上新的端口怎么办?
先确认sshd配置文件语法是否正确,运行 sshd -t 检查,然后看新端口有没有在 ss -tlnp 里显示监听,再检查防火墙和安全组有没有放行新端口,最后用 telnet IP 新端口 测试链路是否打通,如果所有检查都通过,那就是客户端SSH命令少了 -p 参数。
远程连Linux端口这件事,真把上面的流程走一遍,你会发现大多数问题都卡在防火墙和安全组上,记住一句话:端口监听是基础,防火墙是门槛,安全组是云服务器的钥匙,三个都对了,连接也就水到渠成。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/761585.html





