远程主机Docker容器中NiFi的SSH隧道建立问题求助
针对你的NiFi容器SSH隧道访问问题,核心是理清Docker端口映射逻辑,以下是需要注意的关键事项:
严格对应端口映射关系:你的Docker Compose配置中,
ports: - '8091:8080'是将远程主机的8091端口转发到容器内部的8080端口。正确的SSH隧道命令应绑定远程主机的8091端口,而非容器的8080端口。比如沿用你之前的正确逻辑,执行:ssh -L 8091:127.0.0.1:8091 root@remote_host.prod之后在本地浏览器访问
localhost:8091即可,而非用8080端口建立隧道。确认远程主机端口监听状态:在远程主机上执行
netstat -tulpn | grep 8091或ss -tulpn | grep 8091,确保8091端口确实被Docker进程监听。同时检查远程主机防火墙规则,确认8091端口未被拦截(本地回环访问通常不会触发防火墙拦截,但特殊规则需排查)。NiFi监听地址配置:默认NiFi可能绑定容器内部的
127.0.0.1,Docker端口映射会自动将主机请求转发到容器端口,这通常没问题。若后续出现访问异常,可检查容器内NiFi配置文件nifi.properties中的nifi.web.http.host参数,确保设置为0.0.0.0,允许容器接收来自主机的请求。避免本地端口冲突:如果本地8091端口已被其他程序占用,SSH隧道无法建立。这时可更换本地端口,比如:
ssh -L 9091:127.0.0.1:8091 root@remote_host.prod之后本地访问
localhost:9091即可。不要混淆容器端口和主机端口:这是最常见的错误——把容器内部的服务端口(8080)当成远程主机对外暴露的端口。记住Docker ports规则是
主机端口:容器端口,隧道要绑定的是左侧的主机端口。
内容的提问来源于stack exchange,提问作者santhosh

