我目前面临与 RHEL 7.0 有关的 ssh 选项 -g(即远程主机连接到本地转发端口)的问题。
我正在使用通常的命令行从 myserver_ip 地址上的服务器建立带有端口转发的连接:
ssh -o StrictHostKeyChecking=no user@server_fqn -L9090:other_server_ip:9080 -g
当我指向我的浏览器(或尝试使用 curl 获取某些内容时,出现连接被拒绝异常):
curl -X GET "http://myserver_ip:9090"
curl: (7) Failed to connect to myserver_ip port 9090: No route to host
如果我在 Ubuntu 服务器上执行相同操作,它可以完美运行,但在 RHEL 上它根本不起作用。
我怀疑是防火墙、selinux 甚至网络连接。
为了解决/排除此故障,我尝试了以下方法:
- 禁用防火墙(
service firewalld stop
) - 检查 selinux 是否将 9090 管理为有效的 http 端口 (
semanage port -l | grep 9090
),没有问题 - 通过 netstat () 检查端口是否打开
netstat -alptn | grep 9090
,似乎没问题,我有一个 ssh 进程在监听 9090 - 检查服务器是否在以太网接口的 9090 端口上接收数据包(
tcpdump -i ens192 'port 9090' -v
),并且确实收到了数据包......
因此基本上它符合系统在接口上接收请求,ssh 进程正在监听给定端口上的所有接口,但是 ssh 进程不会将数据包转发到另一端...
我确实没有线索可以进行故障排除,因此如果您有任何建议,请不要犹豫,我将非常感激您的帮助。
谢谢,
答案1
Curl 已经告诉你答案了。这与 SSH 无关,与防火墙无关,与 selinux 无关。
no route to host
运行 curl 的机器不知道应该将发往我的 server_ip(它所关联的 ip 地址)的数据包发送到哪里