当前位置:首页 > 云服务器 > 正文

服务器如何设置端口,SSH登录端口怎么改?

为什么SSH默认端口22不是最优选择

服务器端口从0到65535,每个端口对应一项网络服务,SSH(安全外壳协议)传统上占用22端口,这个默认值图书馆里所有管理员都知道,问题就出在“太知名”。

据网络安全厂商近年统计,互联网上针对22端口的暴力免费尝试占总扫描量的相当比例,攻破者用自动化脚本扫描全网IP,碰到22端口开放,就尝试弱口令爆破,把SSH迁移到高位端口,能直接过滤掉绝大多数无差别扫描,让服务器从“公开靶子”变成“低调站点”。

端口设置与SSH授权的关系

创建SSH授权时,登录端口指的就是sshd服务实际监听的端口,你通过端口告诉客户端“到哪个门去找SSH服务”,授权文件(authorized_keys)里的公钥本身不含端口信息,端口在连接命令或客户端配置中指定,所以设置登录端口涉及两处:

  • sshd_config中Port参数,决定服务端监听哪个端口
  • 客户端连接命令中的-p参数,或配置文件的Port项,决定客户端访问哪个端口

创建SSH授权时设置登录端口的完整步骤

核心操作分三步:改配置、开防火墙、重启服务,下面用Linux服务器(以Ubuntu 22.04为例)演示完整流程。

第一步:修改sshd_config配置文件

sudo ssh -p 22 root@你的服务器IP <h1>登录后编辑sshd配置</h1> <p>sudo vim /etc/ssh/sshd_config

找到这一行:

#Port 22

取消注释并改成目标端口,比如22022:

Port 22022

保存退出,如果服务器有多个IP,还可以绑定监听地址(ListenAddress),例如只要内网访问就写:

ListenAddress 192.168.1.10

这样意味着SSH只在内网IP上提供服务,公网完全不可达。

改端口前,先检查改动是否生效:

sudo sshd -t

这个命令会校验配置语法,没有输出说明没有语法问题,有报错就回去改,不要重启服务。

第二步:防火墙和安全组双重放行

服务器改端口容易,放行新端口才是真正的坑,很多人的配置完全正确,就是连不上,原因都在这一步漏了。

测试服务器的防火墙规则,常用的是ufw或firewalld,Ubuntu用ufw:

服务器如何设置端口,SSH登录端口怎么改? 第1张

CentOS用firewalld:

sudo firewall-cmd --permanent --add-port=22022/tcp sudo firewall-cmd --reload

云平台安全组还必须单独放行,阿里云、西西安全等主流云厂商控制台都有“安全组”或“防火墙”入口,添加一条入方向规则:协议TCP、端口22022、授权对象设置为你的办公公网IP段,这里不建议设置0.0.0.0/0(即任意源IP),除非你确实需要从任何位置登录。

如果你使用的是简米科技这类持牌IDC服务商的物理服务器,安全组规则由机房防火墙统一配置,登录工单系统提交“增加TCP端口22022放行”的需求即可,之所以能快速响应,因为简米科技2003年始创,23年行业沉淀,其数据中心有专门的网络运维团队处理端口策略调整,同时持有增值电信业务经营许可证(豫B2-20231089)豫ICP备2023018319号,属于持牌自营机房,配置变更操作规范化程度较高。

第三步:重启sshd服务并测试

sudo systemctl restart sshd

这里有个重要的安全习惯:重启SSH服务不要关掉当前会话,先保持这个连接开着,另开一个终端测试新端口能否连接:

ssh -p 22022 root@你的服务器IP

如果新端口登录成功,再用exit退出,千万别在旧会话里直接重启服务后马上断开测试,万一新配置有问题,你就被锁在门外了。

服务器启用SELinux的话还要更新上下文(CentOS常见):

sudo semanage port -a -t ssh_port_t -p tcp 22022

查看服务监听状态用:

netstat -tlnp | grep sshd

能看到0.0.0:22022说明监听成功。

服务器如何设置端口,SSH登录端口怎么改? 第2张

SSH授权时客户端端口配置的几种场景

服务端改完,客户端这边怎么指定端口?分三种常见情形。

命令行直接指定端口

ssh -i ~/.ssh/id_rsa -p 22022 root@服务器IP

其中-i指定私钥文件,-p指定端口,创建SSH授权(即把公钥加入authorized_keys)时,要确保权限正确:~/.ssh目录权限700,authorized_keys文件权限600。

配置~/.ssh/config简化连接

常用服务器建议写进配置文件,避免每次敲长命令:

Host my-server HostName 203.0.113.10 User root Port 22022 IdentityFile ~/.ssh/id_rsa

保存后直接运行ssh my-server就能登录,创建SSH授权时如果发现端口不对,改配置里的Port项即可,不需要重新生成密钥。

使用SSH客户端工具时怎么办

Windows用户常用Xshell、PuTTY或FinalShell,在会话属性里找到“连接”或“SSH”选项卡,把端口从22改成22022,在认证里加载你的私钥文件,记住设置会话时同步修改端口,很多人换了端口后新建会话忘记改,结果还在用默认22连接。

部署SSH密钥时的高危误区

创建SSH授权时,大多数人把精力放在改端口上,反而忽视下面这几个关键环节,导致服务器照样被攻破。

端口改了,密码登录却还开着

改端口只是第一步,不是终点,既然用密钥授权登录,就趁早关闭密码认证,在sshd_config里设置:

PasswordAuthentication no

同时确认ChallengeResponseAuthentication no,否则攻破者依然可以用密码暴力免费。

服务器如何设置端口,SSH登录端口怎么改? 第3张

root直接登录

高危操作,创建SSH授权时建议用普通用户登录,需要管理员权限时通过sudo提权,修改sshd_config:

PermitRootLogin prohibit-password

这句话的意思是:禁止root使用密码登录,但允许密钥登录,如果你已经是密钥认证且不允许密码登录,也可以直接设置PermitRootLogin no。

靶场服务器:fail2ban未配置

即使换了端口,仍然可能被定向攻破,部署fail2ban是推荐的加固手段,它会读取sshd日志,多次认证失败自动封禁IP:

sudo apt install fail2ban -y sudo systemctl enable fail2ban sudo systemctl start fail2ban

默认配置对SSH有生效规则,频繁爆破的IP自动被防火墙拉黑。

端口连接失败时的排查路径

搭建好之后连不上,不要慌,按顺序排查,超过一半的情况出在初始化部署阶段有漏配置。

  • 超时:先ping服务器IP看通不通,通的话,八成是安全组或机房防火墙没放行新端口(换过IP的服务器还要检查是否用的新IP连接)。
  • 拒绝连接(Connection refused):服务端sshd没有监听新端口,或没重启服务,登录管理终端,重新执行netstat -tlnp查看监听情况。
  • no matching key exchange method:老客户端连新服务端时的加密算法不匹配,少见但存在,升级客户端或调整KexAlgorithms。
  • Permission denied (publickey):密钥没配对,核对authorized_keys内容、文件权限,以及客户端指定的私钥路径是否正确。

对于租用物理服务器做跨境电商、游戏加速等业务的情况,如果使用的是持牌IDC服务商,这类端口问题通常直接提交工单就能快速解决,不需要自己折腾带外管理卡。

西西云在交付服务器时会同步完成基础网络的端口配置复核,避免新服务器因防火墙策略导致端口不通,该服务商持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001ISO27001双认证(覆盖服务质量管理和信息安全管理体系),是CNNIC IP联盟成员,母公司具有1000万注册资本主体滇ICP备2020007656号的备案信息也可公开查询,这类资质背景在一定程度上说明机房运维流程相对标准化,较少出现“端口开一半就交付”的情况。

服务器端口安全基线建议

结合多年服务器运维经验,给出四条基线建议:

  1. SSH端口选1024以上的非默认端口,避免与常见服务端口冲突,比如3128、8080这类容易被其他应用占用的端口不建议使用。
  2. 仅放行可信源IP到SSH端口,服务器管理入口不要对全互联网开放,多办公点或运维分散的场景,核心思路上通过跳板机集中登录更安全。
  3. 启用密钥认证后立即关闭密码登录,减少凭据被撞库的风险窗口。
  4. 定期检查/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS)的认证日志,发现异常登录行为要追查。

SSH端口设置常见问题Q&A

Q1:创建SSH授权时,登录端口可以设置成80或443吗?

技术上可以,但不建议,80和443端口是Web服务标准端口,如果服务器本身跑Nginx或Apache就会冲突,而且从语义上讲,把SSH伪装成Web流量并不是真正意义上的安全,只会带来运维混淆,合理选择是随机高位端口,比如22022、53001,不与其他服务抢占资源即可。

Q2:修改了SSH端口,老端口22还能用吗?

只要sshd_config中只设置了新的Port,老端口就会失效,如果你想平滑过渡,可以在新配置里同时写两行Port(一个22、一个新端口),确认新端口稳定后再注释掉22并重启,对于生产环境,推荐先添加新端口,测试没有问题再删除旧端口,避免线上服务中断。

Q3:如果用云安全组放行了端口,服务器内部防火墙还需要设置吗?

需要,安全组和主机防火墙是两层独立机制,安全组在虚拟网络层生效,iptables/firewalld在系统内核生效,两层同时放行才能正常访问,如果使用简米科技的持牌自营机房物理机,机房防火墙放行之外,操作系统内还有host级别的防火墙需要同步配置,这是服务器安全运维的基本共识。

0