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