96SEO 2026-08-14 18:13 2
按理说,
这件看似简单的“改 SSH 端口”操作。却常常让运维人员踩雷,公网 VPS 的 SSH 接口天天被扫。想把 sshd 挪到一个高位端口来降低 auth 日志噪音,却不小心把自己锁在外面。下面我把两次失误的复盘整理出来帮助你在改动前先做个“风险预演”。

我按教科书操作:
# /etc/ssh/sshd_config
Port
PasswordAuntication no
再看接下来执行。
# systemctl reload sshd
# vim ~/.ssh/config # 把 Port 改成
# cloud security group 放行
$ ssh myserver: # Connection refused
Connection refused 和 timeout 是两种完全不同的故障。 “refused”说明 TCP 包已经抵达主机,但没有服务监听;“timeout”则是包被防火墙或安全组丢弃。说起来,于是我先用 nc 确认:
$ nc -zv . .
nc这方面。connect ... port failed: Connection refused
$ nc -zv .
Connection to . port succeeded!
旧端口还活着,可以登录确认问题。
登录后检查配置与实际监听:
$ sshd -T | grep ^port
port
$ ss -tlnp | grep sshd
LISTEN .: users:) #?,?LISTEN : users:)
注意最终一行显示监听 fd 的持有者是 systemd。这是因为 Ubuntu 从某个版本开始默认使用 systemd socket activation;监听 socket 由 systemd 单元 ssh.socket 创建并交给 sshd,而不是直接由 sshd 听。这代表着对 sshd_config 中的 Port 没有任何作用。
要判断是否启用了 socket activation,只需执行:
$ systemctl is-enabled ssh.socket
enabled # 如果是 enabled。你改 Port 就是白改
对了我还发现密码验证没有生效。原因是 OpenSSH 的首值生效规则:主配置文件中包含了 "Include /etc/ssh/sshd_config.d/*.conf";cloud-init 自动生成的配置文件里将 PasswordAuntication 设置为 yes。在我的 no 前面优先解析,从而导致密码登录仍然开启。不过,
"我设了",但真正生效的是所有 include 的合并结果。除非你查看 sshd -T,否则根本无法知道最终取值。
意识到需要修改 socket 单元。于是创建 drop‑in 文件:
# /etc/systemd/system/ssh.socket.d/listen.conf
ListenStream=
ListenStream=:8080 # 清空原有列表
ListenStream=:
ListenStream=:
执行 reload 与 restart 后再查看:
$ ss -tln | grep :
LISTEN :
LISTEN :
只是当我尝试连接时还是出现 Connection refused。原因是程序只创建了 IPv6 通配 socket,而 IPv4 流量未被映射。原来的 socked 单元里包含独立 IPv4 socket,我无意间把它抹掉了。
被锁在外面时一定要先确认至少还有一种不依赖 SSH 的登录方式,例如云厂商提供的 VNC、web 控制台或 API 控制台。如果没有,可考虑提前打开一个备用 VPN 或远程桌面通道,以防万一。说起来,
| 通道检测结果 | |
|---|---|
| 80 通道正常? | 结果说明 |
| ✓ | 机器和反代都活着,只是 SSH 锁住了内网穿透网关预留的 raw TCP 入口通道。理论上可以通过管理面板建立资源代理回到 .:,从旁门进入——差点用云厂商自动化助手 做这件事。但本机没配 CLI 凭据,IPv6 方法不可用,只能借助云厂商网页 VNC 正解。话说回来, |
/etc/systemd/system/ssh.socket.d/listen.conf
bash
mkdir -p /etc/systemd/system/ssh.socket.d
bash
cat> /etc/systemd/system/ssh.socket.d/listen.conf <'EOF'
ListenStream= # clear previous list
ListenStream=.:8080 # old port placeholder
ListenStream=:${NEWPORT}
ListenStream=:${NEWPORT}
EOF
The : before ${NEWPORT} ensures a wildcard IPv4 address.
The entry guarantees IPv6 listening.
If you need both ports active。keep old line.
systemctl daemon-reload && systemctl restart ssh.socket -- reloads socket unit and restarts any running service.
sshd -T | grep ^port – verify effective port setting.
systemctl is-enabled ssh.socket – confirm socket activation.
• If you still want PasswordAuntication no,patch cloud‑init config:
bash
sed -i 's/^#\?PasswordAuntication .*/PasswordAuntication no/' \
/etc/ssh/sshd_config
printf 'PasswordAuntication no '> \ /etc/ssh/sshd_config.d/-cloud-init.conf
This fragment will be read after main config and before or fragments,ensuring your choice takes precedence.
• Verify new connection works:
bash
nc -zv ${SERVER_IP} ${NEWPORT} && echo 'OK'
or try ssh ${USER}@${SERVER_IP} -oPort=${NEWPORT}.
• Finally disable old port once you’re sure everything works:
bash
systemctl stop ssh.service # stop service listening on old port
sed -i '/^Port/d' /etc/ssh/sshd_config
systemctl daemon-reload && systemctl restart ssh.service
BOTTOM LINE:
Port value when using systemd socket activation.
:${PORT} and :${PORT} lines if you care about dual stack connectivity.
/etc/ssh/*;always confirm with sshd -T and ss. They may disagree.
Connection refused means “no listener”,while timeout means “packet dropped by firewall”. Check m separately.
• A successful migration follows this order:
• Sg open new port → dual ports running → validate new connection → client switch → disable old port.
Remember se lessons next time you move your SSH endpoint—your time will thank you.
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback