如何确认Linux SSH隧道是否已成功激活并正常工作?
验证SSH隧道是否正确初始化的方法
一、本地主机验证
1. 检查本地监听端口
SSH本地隧道启动后会在本地监听指定端口,可通过以下命令确认端口是否处于监听状态:
# 推荐使用ss命令 ss -tuln | grep 3338 # 或使用netstat命令 netstat -tuln | grep 3338
输出中若包含LISTEN状态,说明本地端口已成功监听,隧道的本地端初始化完成。
2. 测试隧道连通性
发起实际连接请求触发SSH隧道的后端连接尝试,验证整个链路是否通畅:
# 使用netcat测试 nc -zv localhost 3338 # 或使用telnet测试 telnet localhost 3338
- 返回
succeeded(nc)或进入telnet交互界面,说明隧道可正常转发流量; - 返回
Connection refused或超时,说明隧道后端连接失败(大概率是堡垒机无法访问目标地址)。
注:SSH本地转发在启动时仅完成本地端口监听和向堡垒机注册转发请求,不会立即验证目标地址的可达性,只有当首次有流量通过隧道时,才会尝试建立堡垒机到目标地址的连接——这也是你初始化时verbose输出无差异的核心原因。
二、bastion1堡垒机验证
1. 直接验证堡垒机到目标地址的连通性
登录堡垒机后,测试其与目标地址的网络连通性(这是隧道正常工作的前提):
# 测试可达目标 nc -zv <reachable-ip-adress> 4000 # 测试不可达目标 nc -zv <unreachable-ip-adress> 4001
如果堡垒机无法访问目标地址,隧道必然无法正常工作。
2. 检查堡垒机上的SSH转发状态
登录堡垒机后,查看SSH进程相关的网络连接,确认转发是否已注册:
# 查看SSH相关的网络连接 sudo lsof -i -n | grep ssh # 或检查是否有到目标地址的连接(有流量通过后才会出现) ss -tuln | grep <目标端口>
3. 查看SSH服务日志
堡垒机的SSH日志会记录转发相关的错误信息,例如目标地址不可达时的报错:
# Debian/Ubuntu系统 sudo tail -f /var/log/auth.log # RHEL/CentOS系统 sudo tail -f /var/log/secure
当有流量尝试通过隧道时,若目标不可达,日志中会出现类似connect to address <unreachable-ip-adress> port 4001: Connection refused的错误信息。
内容的提问来源于stack exchange,提问作者it.drive.view
相关产品推荐
相关产品推荐

