服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-27 简米科技 3,658 字 9 分钟阅读

SSH端口安全设置怎么做?,SSH登录方式安全配置有哪些

导读SSH端口和登录方式的安全设置,核心就两条:改掉默认22端口,禁用密码登录改用密钥认证,做完这两步,绝大多数自动化爆破攻击基本就失效了,很多人的服务器被入侵,问题不是出在系统漏洞,而是SSH服务裸奔在默认端口上,还开着密码登录,服务器一上线,全网扫描器几分钟就能找到你,然后开始暴力破解,本文从实际运维场景出发……

SSH端口和登录方式的安全设置,核心就两条:改掉默认22端口,禁用密码登录改用密钥认证,做完这两步,绝大多数自动化爆破攻击基本就失效了。

很多人的服务器被入侵,问题不是出在系统漏洞,而是SSH服务裸奔在默认端口上,还开着密码登录,服务器一上线,全网扫描器几分钟就能找到你,然后开始暴力破解,本文从实际运维场景出发,给出具体操作路径,帮你把SSH这扇门彻底锁好。

为什么你的服务器总是被暴力破解

22端口是黑客的"默认门牌号"

默认22端口是SSH服务的标准入口,这意味着全球所有扫描工具都优先探测这个端口,业内专家指出,互联网上针对22端口的暴力破解攻击从未停止过,任何暴露公网的IP在几小时内就会收到来自不同来源的扫描和尝试登录请求。

举个具体场景:你刚买了一台云服务器,配置好SSH工作正常,第二天查看登录日志,发现几十条来自海外IP的登录失败记录,这不是针对你,而是自动化的扫描程序在批量撒网,碰巧扫到了你。

密码登录是最大的"后门"

密码登录方式本身就有天然缺陷:人类设置的密码强度有限,容易复用,而且无法阻止暴力尝试,即便你设置了一个强密码,理论上也架不住持续的字典攻击,更麻烦的是密码登录日志中不会记录输入来源的键盘特征,一旦泄露完全无法追溯。

相比之下,密钥认证的强度是指数级的,它使用非对称加密,私钥长度动辄2048位或4096位,暴力破解的计算量在物理上就不现实。

SSH端口修改教程:关键一步,立竿见影

第一步:修改sshd_config配置文件

登录服务器后,直接编辑SSH主配置文件:

sudo vim /etc/ssh/sshd_config

找到 #Port 22 这一行,去掉注释,把22改成你想要的高位端口号。端口范围可选1024-65535之间,建议避开常见服务端口如3306、6379等,防止混淆,举例:Port 28462,一个随机高位端口足够隐蔽。

保存退出后,务必先测试再重启服务

SSH端口安全设置怎么做?,SSH登录方式安全配置有哪些

,防止把自己锁在外面:

sudo sshd -t          # 检查语法
sudo systemctl restart sshd

第二步:防火墙同步规则

修改端口后,防火墙和云平台安全组必须同步放行新端口,这一步漏了,你会发现SSH直接连不上。

以firewalld为例:

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

同时删除旧的22端口放行规则,登录测试确认新端口正常后,再考虑关闭22端口。

第三步:验证新端口生效

另开一个终端,使用新端口连接:

ssh -p 28462 用户名@服务器IP

连接成功后,回到服务器上确认监听状态已经变为新端口,并且22端口不再监听,才算彻底切换完成。

SSH密钥登录怎么配置:比密码安全一个量级

生成密钥对并部署到服务器

在本地电脑(不是服务器)上生成密钥对:

ssh-keygen -t ed25519 -C "icloud-2026-ssh"

推荐ed25519算法,密钥短、速度快、安全性高,也可以选择rsa -b 4096,但ed25519更符合当前行业共识。

一路回车默认保存到 ~/.ssh/id_ed25519,然后使用ssh-copy-id将公钥部署到服务器:

ssh-copy-id -p 28462 用户名@服务器IP

也可以手动追加公钥到服务器的 ~/.ssh/authorized_keys 文件中,注意确保该文件权限为600,.ssh 目录权限为700。

禁用密码登录:终极设置

密钥部署成功并确认可以正常登录后,修改sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes

重启sshd服务后,密码登录方式彻底关闭,此时哪怕知道密码也进不来,只有持有私钥的设备才能访问。

多台服务器场景下的密钥策略

管理多台服务器时,建议为不同安全级别的机器使用不同的密钥对,把线上生产环境的私钥单独存放,并设置强密码保护私钥本身(passphrase),防止本地电脑被攻破导致密钥泄露。

SSH端口安全设置怎么做?,SSH登录方式安全配置有哪些

对比维度 密码登录 密钥登录
暴力破解难度 较低,持续尝试即可 极高,计算上不可行
密码泄露风险 存在(撞库、钓鱼) 私钥本地持有
多服务器管理 密码需各自独立 可分发公钥集中管控
审计追溯 日志仅记录IP 可按密钥区分访问者

SSH安全加固进阶配置:从可用到安全

限制登录用户和IP白名单

在sshd_config中指定允许登录的用户:

AllowUsers admin deploy

这行配置见效快,效果明确只有这两个用户可以SSH登录,其余用户一律拒绝,如果办公IP固定,可以叠加防火墙规则白名单,只允许特定IP访问SSH端口,多数情况下移动办公场景不合适,但固定工位场景强烈建议。

开启Fail2Ban拦截恶意IP

Fail2ban是Linux下主流的入侵防御工具,它监测SSH登录日志,发现连续失败自动封禁来源IP,配置操作路径:

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

修改 jail.local 中 [sshd] 段落:

enabled = true
port = 28462
maxretry = 3
bantime = 3600

设置含义:连续3次失败,封禁1小时,这套机制能自动过滤掉绝大多数批量攻击来源。

使用非root账号管理服务器

root账号拥有全部权限,默认是攻击者的第一目标,创建普通用户,赋予sudo权限,使用普通用户登录后再提权操作:

sudo useradd -m -s /bin/bash admin
sudo usermod -aG sudo admin

在sshd_config中设置 PermitRootLogin no,不给root任何直接登录的机会。所有操作都通过普通用户+sudo执行,日志可追溯,避免误操作造成不可逆损伤。

监控登录日志和异常行为

养成定期检查登录日志的习惯,查看所有登录记录:

sudo journalctl -u ssh -n 200

或查看auth日志:

sudo tail -f /var/log/auth.log

关注持续失败登录、异常时间的成功登录、非预期IP来源,自动化报警可以用简单的cron脚本+邮件通知来实现,检测到连续失败记录自动发送告警。

SSH端口安全设置怎么做?,SSH登录方式安全配置有哪些

SSH安全设置的常见误区

只改端口不关密码登录

改端口只是提高了攻击门槛,并没有改变认证方式的安全等级,如果新端口被探测到,密码暴力破解依旧可以推进,安全核心是密钥认证,改端口只是辅助手段。

密钥文件不设口令

私钥本身泄露等同于账号沦陷,生成私钥时设置passphrase,每次使用私钥时输入口令验证,配合ssh-agent可以避免频繁输入口令,既安全又方便。

认为内网服务器不需要加固

很多人在阿里酷番云上做了安全设置,但内网服务器之间不设防,实际运维中,内网机器一旦被横向移动攻破,可以做很多事情了。内网SSH同样应该用密钥登录,设置一致的安全基线。

关于SSH安全设置的Q&A

修改SSH端口会不会影响现有业务?

不会。 SSH端口与应用服务端口是两套独立体系,修改22为新端口后,只需注意:

  • 防火墙、安全组同步放行新端口
  • 所有自动化脚本中的连接端口同步更新,包括rsync、git、ansible等工具
  • 监控系统探测SSH端口的配置同步修改

做好这三处同步,业务无感切换。

SSH登录失败太多,如何快速排查?

首先查看错误日志定位原因:

sudo tail -100 /var/log/auth.log | grep Failed

常见情况有:密钥不匹配、authorized_keys权限错误、用户名拼写错误、新端口未同步到防火墙,按顺序验证端口连通性、密钥格式、服务状态即可,多数情况下是防火墙规则遗漏导致的。

服务器被入侵了怎么判断是否通过SSH进来的?

查看登录记录是最直接的判断方式,检查 /var/log/auth.log 中是否有非预期的成功登录记录,同时查看 ~/.ssh/authorized_keys 是否被篡改添加了新密钥,如果确认被入侵,立即吊销当前密钥对、检查系统用户列表,并排查是否有setuid后门文件,安全事件处理优先断开网络再取证分析,避免攻击者通过已植入的后门持续控制机器。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱