Docker SSH转发-绑定:地址不可用

问题描述 投票:3回答:2

我有一个Docker容器,我希望它能够通过SSH隧道与数据库进行交互。

我的Docker映像是基于高山映像构建的,并且在Dockerfile中,我已经安装了openssh-client并公开了端口27017

当我启动Docker映像并尝试使用以下命令转发端口时:

ssh -i /.ssh/ssh_key user@remote_ip -L 27017:localhost:27017 -Nf

我收到一个错误:

bind: Address not available

ssh进入远程服务器不是问题,但是我不能转发端口。

谢谢

docker ssh portforwarding openssh alpine
2个回答
1
投票

我设法使用此入口点从docker-compose创建ssh隧道:

ssh -4 -i /.ssh/ssh_key -NL *:27017:0.0.0.0:27017 user@remote_ip

然后,我能够通过使用由docker-compose创建的网络使用另一个容器的ssh隧道

docker run --network=tunnel_default image nmap -p 27027 service_name

tunnel_default是网络的名称

[image是已安装nmap的docker映像(它允许您检查打开的端口)]

service_name是我在docker-compose内部为服务指定的名称>


1
投票

如果不指定要使用的接口,则将获得“绑定地址不可用”。默认情况下,它将使用所有这些文件,包括IPV6。就我而言,它绑定在IPV4上,但“地址不可用”实际上是针对IPV6的,例如bind [::1]:2001: Address not available。如果使用-4选项,它将仅使用IPV4,并且如果遇到IPV6类型错误,则可以为您解决该问题,这在Arch Linux上是对我有用的。

© www.soinside.com 2019 - 2024. All rights reserved.