新闻资讯
领先云端方案商,专注云桌面、云手机研发,凭核心虚拟化技术与云端算力,打造安全高效数字化平台,提供全周期支持。
分类
相关文章
热门标签

跳板机 转发 常见问题排查技巧包括连接失败与中断重连处理

2026年5月28日
跳板机

1.

概述与准备工作

- 目标:快速定位跳板机(跳板机 = Bastion host)转发失败原因并实现稳定重连。
- 必备信息:跳板机IP/域名、目标服务IP/端口、本地转发端口、SSH用户与密钥、跳板机防火墙规则、两端网络连通性工具(ping/traceroute/tcpdump)。
- 工具准备:在本地和跳板机安装ssh、ssh-keygen、netcat(nc)、sshd、iptables/ufw、autossh、systemd。

2.

常见故障诊断流程(总步骤)

- 步骤一:确认基础连通性(ping/Traceroute),若ICMP不可达改用tcp端口检测(nc -vz host port)。
- 步骤二:验证SSH能否建立(ssh -vvv user@bastion),观察认证/超时/拒绝提示。
- 步骤三:检查端口转发是否成功(本地通过telnet/ nc 访问转发端口)。
- 步骤四:查看跳板机和目标服务日志(/var/log/auth.log、/var/log/secure、目标服务日志)。

3.

网络链路检查详细步骤

- 在本地执行:ping bastion、traceroute bastion、nc -vz bastion 22;若失败,检查本地路由和DNS(dig/domain解析)。
- 在跳板机执行:ping 目标服务、traceroute 目标服务、nc -vz target_ip target_port;若内部不可达,检查内网路由、VPC安全组、NAT网关。
- 使用tcpdump抓包(sudo tcpdump -i eth0 host and port )定位是否有SYN到达或RST返回。

4.

SSH认证与权限排查(常见导致连接失败)

- 检查密钥权限:~/.ssh 权限应为700,私钥600(chmod 700 ~/.ssh; chmod 600 ~/.ssh/id_rsa)。
- 本地ssh -vvv user@bastion,定位是密钥被拒绝(Permission denied)还是超时。若被拒绝,确认公钥已加入跳板机 ~/.ssh/authorized_keys 且无多余字符。
- 若使用代理跳转(ProxyJump/ProxyCommand),检查中间跳转主机链路与配置正确,避免双重认证失败。

5.

端口转发配置检查(本地/远程/动态)

- 本地转发示例:ssh -L 8080:target:80 user@bastion;验证本地 127.0.0.1:8080 可访问目标。
- 远程转发示例:ssh -R 9090:localhost:3000 user@bastion;在跳板上用 nc localhost 9090 测试是否转发到本地。
- 若使用GatewayPorts,需要在 /etc/ssh/sshd_config 中设置 GatewayPorts yes 并重启sshd;检查端口是否被监听(ss -tlnp | grep 8080)。

6.

防火墙、NAT与路由策略核对

- 跳板机防火墙(iptables/ufw/firewalld):列出规则(sudo iptables -S 或 sudo ufw status)。允许SSH与转发端口的入/出规则。
- 云环境安全组:确认跳板机与目标服务间的安全组规则允许相互访问。若使用NAT/负载均衡,检查源地址转换是否影响连接。
- MTU与碎包:若大包传输失败,尝试降低MTU(ip link set dev eth0 mtu 1400)并测试。

7.

中断重连与持久隧道实操(autossh/systemd/KeepAlive)

- 简单保持:在ssh配置中加入 ServerAliveInterval 30、ServerAliveCountMax 3,能检测并断开死连接。
- 使用autossh:安装 autossh 后用 autossh -M 20000 -f -N -L 8080:target:80 user@bastion。参数说明:-M 心跳端口,-f 后台,-N 不执行远程命令。
- systemd服务管理:创建 /etc/systemd/system/ssh-tunnel.service,配置 ExecStart 为 autossh 命令,Restart=always,RestartSec=10;然后 systemctl daemon-reload && systemctl enable --now ssh-tunnel。

8.

日志、监控与自动恢复脚本

- 日志查看:/var/log/auth.log、/var/log/syslog,定位认证失败、连接被拒绝或 KeepAlive 导致断开。
- 监控策略:使用简单脚本定期检测端口(nc -z localhost 8080),若失败发送告警并重启 systemd 服务。
- 自动恢复示例脚本(/usr/local/bin/check_tunnel.sh):检查nc结果,不通则 systemctl restart ssh-tunnel;将脚本加入crontab每分钟执行或用监控系统(Prometheus + Alertmanager)。

9.

问:连接失败时最先应该做哪三步?

- 答:1)确认本地到跳板机的基本连通性(ping/traceroute/nc -vz bastion 22);2)用 ssh -vvv 获取详细认证与协商日志,定位是超时、密钥拒绝还是版本不兼容;3)在跳板机上验证到目标服务的连通性(ping/traceroute/nc -vz target port)并查看防火墙规则。

10.

问:如何保证跳板机隧道在网络波动后自动恢复?

- 答:推荐结合三层策略:1)SSH内建KeepAlive(ServerAliveInterval/CountMax)减少死连接;2)使用autossh自动重建隧道并监控心跳端口;3)用systemd托管隧道进程(Restart=always)并配置健康检查脚本以自动重启。

11.

问:常见误区与安全注意事项有哪些?

- 答:误区:频繁放宽防火墙以“方便测试”会暴露风险;使用密码认证而非密钥增加被暴力破解风险;不记录日志导致难以排查。注意事项:仅开放必要端口、使用密钥并加密私钥、限制来源IP/安全组、定期轮换密钥并审计authorized_keys,以及限制Jump用户权限(使用sshd Match与ForceCommand等)。


来源:跳板机 转发 常见问题排查技巧包括连接失败与中断重连处理