要远程连接Linux服务器,端口设置的核心就一句话:放行SSH端口(默认22),同时确保云平台安全组和系统内部防火墙都允许该端口的入站流量。很多人连不上服务器,往往不是IP或密码错了,而是卡在端口这一层要么没开防火墙端口,要么安全组规则漏配,下面直接拆解远程连接电脑linux服务器端口怎么设置的全流程,从原理到命令一次讲透。
远程连接linux服务器端口设置前,先搞懂端口在扮演什么角色
很多新手一上来就改端口,结果把自己锁在门外,其实端口设置没那么玄乎,它就是服务器上的一扇门:门开了,外部流量才能进来;门关了,谁都进不去,你要远程连接Linux服务器,默认走的就是22号端口(SSH协议专用),但22号端口常常被扫描攻击,所以不少人会改成其他端口号,比如22026,改完以后,必须同时放行新端口,否则你连服务器都登不进去。
Linux服务器端口有哪些默认角色
除了SSH的22端口,Linux上还有几个常见端口,它们各有各的用途,设置时别搞混:
- 22端口:SSH远程管理,远程连接Linux服务器全靠它。
- 80端口:HTTP网站服务,Nginx或Apache默认监听。
- 443端口:HTTPS加密网站,云服务器上部署证书后必须放行。
- 3306端口:MySQL数据库默认端口,只有本机能连的话建议别对外开放。
- 5432端口:PostgreSQL数据库默认端口,类似3306,放行前要确认是否必要。
行业共识认为,最小化开放端口是Linux服务器安全的第一原则,也就是说,只开你业务真正用到的端口,其他全部关闭。
云服务器和物理机的端口设置差异
这个区别很重要,因为很多人在物理机上设好了端口,换到云服务器却失败。
- 物理机:端口控制全靠系统内部的防火墙,比如firewalld或iptables,你只要在系统里放行端口,外部就能访问。
- 云服务器:除了系统内部防火墙,还多了一道安全组,安全组是云平台提供的虚拟防火墙,在系统外部过滤流量,即使你在Linux里放行了端口,安全组没放行,流量照样进不来。
所以做云服务器端口设置时,要检查两层:安全组规则和系统内部防火墙
,两个都放行了,远程连接才会通。
linux服务器端口设置方法:从防火墙到安全组一步步来
下面按实际操作顺序来,先改端口,再放行端口,最后配安全组。
修改SSH端口并放行新端口
如果你想换个更安全的SSH端口,比如改成2222,步骤是这样的:
- 用编辑器打开SSH配置文件:
sudo vim /etc/ssh/sshd_config
- 找到
#Port 22这一行,去掉注释,把数字改成2222:Port 2222 - 保存退出,然后重启SSH服务:
sudo systemctl restart sshd
- 关键一步:不要急着断开当前连接,先用新端口开一个新的终端窗口测试,确认能连上再断开旧的,否则一旦新端口没放行,你就把自己锁在服务器外面了。
用firewalld和iptables开放端口
系统内部防火墙放行端口,有两种主流方式,CentOS/RHEL 7+自带firewalld,Ubuntu默认用ufw,但底层一般还是iptables,这里讲最常用的两个。
firewalld(CentOS 7/8/9、Rocky Linux等):
- 放行新SSH端口:
sudo firewall-cmd --permanent --add-port=2222/tcp
- 放行多个端口可以这样写:
sudo firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
- 重新加载防火墙配置:
sudo firewall-cmd --reload
- 查看已放行的端口:
sudo firewall-cmd --list-ports
iptables(通用,老版本系统或特殊环境):
- 放行一个TCP端口:
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
- 保存规则,以免重启后失效:
sudo service iptables save
- 如果想删除某条规则,用
-D代替-A即可。
用iptables时要小心,别在你还连着的会话里清空规则,否则当前连接也会被切断,业内专家指出,iptables规则是有顺序的,-A追加到末尾,如果前面有拒绝规则,新规则可能不生效。
云服务器安全组端口规则怎么配
这一步是云服务器端口设置教程里最容易漏掉的部分,买简米云、酷番云、华为云的服务器,安全组规则往往默认只放行了22、80、443等少数端口,你的Linux系统内部就算全开了,安全组不放行也没用。
配置入口大致如下(以两家主流云平台为例):
- 简米云:控制台 → ECS实例 → 选择实例 → 安全组 → 配置规则 → 入方向 → 手动添加端口。
- 酷番云:控制台 → 云服务器CVM → 实例 → 安全组 → 编辑规则 → 入站规则 → 添加端口。
添加规则时,一般要填这几个字段:
| 字段 | 示例值 | 说明 |
|---|---|---|
| 协议类型 | TCP | 按需选择,SSH是TCP |
| 端口范围 | 2222/2222 | 单个端口或区间,比如80/443 |
| 授权对象 | 0.0.0/0 | 允许所有IP访问,建议限制为你的固定IP |
| 策略 | 允许 | 放行流量 |
建议把授权对象设置成你自己的公网IP,123.123.123/32,这样只有你的电脑能连,别人扫到端口也进不来,如果公司只有动态IP,那就退而求其次,放行常见办公IP段。
linux服务器端口开放查询与测试,确保能连上
设置完以后,别急着用软件去连,先自己查一下端口到底开没开,这部分就是linux服务器端口开放查询的实操。
查询端口状态命令
Linux下最常用的三个命令,随便选一个都行:
ss(推荐,新系统自带,输出快):sudo ss -tlnp
netstat(老命令,需要自己装):sudo netstat -tlnp
lsof(按进程查端口):sudo lsof -i:2222
这三个命令都能列出监听端口,只要看到自己的新端口处于 LISTEN 状态,就说明SSH服务已经在那个端口上等着了。ss -tlnp 输出里有这样一行,就是正常的:
LISTEN 0 128 0.0.0.0:2222 0.0.0.0: users:(("sshd",pid=1234,fd=3))
本地测试和远程测试的差别
端口在本地看着是通的,不代表远程就能连,你自己在服务器上执行 ss 查到的,只是本机监听状态,要验证从外部能不能到达,得从另一台机器上测。
最简单的测试方法:
- 用你本地电脑的终端执行:
telnet 服务器公网IP 2222
- 或者用
nc(netcat):nc -zv 服务器公网IP 2222
如果返回 Connected to 或 succeeded,说明端口通了;如果提示 Connection refused 或超时,那就要检查安全组和防火墙,这一步能帮你把问题缩小到具体哪一层,而不是瞎猜。
远程连接linux服务器端口设置常见问题(Q&A)
问题1:改完SSH端口后,用新端口连不上,怎么办?
先确认sshd服务是启动状态:systemctl status sshd,然后检查系统防火墙是否放行新端口:firewall-cmd --list-ports,再看云平台安全组是否添加了规则,如果三处都对了,还是连不上,大概率是selinux拦截了,临时关闭试试:setenforce 0,能连上后,再用 semanage port -a -t ssh_port_t -p tcp 2222 把新端口加进SELinux允许列表。
问题2:端口明明是通的,远程连接电脑linux服务器还是失败?
端口通了,说明网络层没问题,这时候去查SSH服务本身,看看配置文件里有没有语法错误:sshd -t,如果没报错,再检查账号密码或者密钥权限,很多人忘了.ssh/authorized_keys文件的权限必须是600,目录权限必须是700,否则密钥认证会被拒绝,另外/etc/ssh/sshd_config里如果有PermitRootLogin no,那你用root登录也会被拒。
问题3:云服务器安全组和系统防火墙,到底哪个优先?
两个都起作用,但安全组是在云平台层先过滤流量,系统防火墙是后过滤,流量必须同时通过两层才能连通,所以排查顺序是:先看安全组有没有放行,再看系统防火墙有没有放行,只要有一层拦着,连接就失败,实践中绝大多数连不上的情况,都是安全组漏配置,先把安全组的入方向规则配好,再看系统内部防火墙,效率最高。
端口设置这件事,看起来小,但卡住很多人,记住一个核心结论:远程连接Linux服务器,离不开SSH端口;任何一层没放行,连接就失败,先把安全组和系统防火墙都检查一遍,再动手改端口,你就不会把自己锁在门外了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/723854.html





