Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSH配置文件端口转发在Docker中未按预期工作(撰写)_Docker_Ssh_Openssh_Alpine - Fatal编程技术网

SSH配置文件端口转发在Docker中未按预期工作(撰写)

SSH配置文件端口转发在Docker中未按预期工作(撰写),docker,ssh,openssh,alpine,Docker,Ssh,Openssh,Alpine,我有一个带有nginx、php、redis的Docker Compose文件,还有一个专用于SSH隧道的容器 我在mac上有一个ssh配置文件,当我运行ssh my tunnel时,该文件会按预期工作,并通过文件/ssh/config暴露给映像 这是我的ssh隧道Dockerfile FROM alpine:edge RUN apk add --update openssh-client && rm -rf /var/cache/apk/* # cagataygurturk/

我有一个带有nginx、php、redis的Docker Compose文件,还有一个专用于SSH隧道的容器

我在mac上有一个ssh配置文件,当我运行
ssh my tunnel
时,该文件会按预期工作,并通过文件
/ssh/config
暴露给映像

这是我的ssh隧道Dockerfile

FROM alpine:edge

RUN apk add --update openssh-client && rm -rf /var/cache/apk/*

# cagataygurturk/docker-ssh-tunnel:0.0.1
CMD rm -rf /root/.ssh && mkdir /root/.ssh && \
    cp /run/secrets/ssh_config /root/.ssh/config && \
    cp /run/secrets/ssh_key /root/.ssh/id_rsa && \
    chmod -R 600 /root/.ssh/* && \
    # see https://man.openbsd.org/ssh
    ssh -4 -o StrictHostKeyChecking=no -N $TUNNEL_HOST \
    && while true; do sleep 30; done;
EXPOSE 1-65535
这是我的docker-compose.yaml(节略)

我从该容器获得的唯一输出是
警告:永久性地将“[IP\u-SPECIFIED\u-IN\u-CONFIG]:PORT\u-SPECIFIED\u-IN\u-IN\u-CONFIG\u-FILE”(ECDSA)添加到已知主机列表中。
并且应用程序无法连接到隧道服务。唯一可以解决这个问题的方法是将
CMD
更改为

CMD rm -rf /root/.ssh && mkdir /root/.ssh && \
cp /run/secrets/ssh_config /root/.ssh/config && \
cp /run/secrets/ssh_key /root/.ssh/id_rsa && \
chmod -R 600 /root/.ssh/* && \
# see https://man.openbsd.org/ssh
ssh -4 -o StrictHostKeyChecking=no -N $TUNNEL_HOST \
-L *:$LOCAL_PORT_1:$REMOTE_HOST_1:$REMOTE_PORT_1 \
-L *:$LOCAL_PORT_2:$REMOTE_HOST_2:$REMOTE_PORT_2 \
&& while true; do sleep 30; done;
这并不理想,因为需要多个本地转发,否则我只会使用

为什么不使用命令行选项
-L
指定本地转发的配置不起作用?我知道正在读取配置文件(包含本地转发),因为IP地址已添加到已知的\u主机

netstat-an的输出

# WORKING
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address            Foreign Address         
State
tcp        0      0 127.0.0.11:34951         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:$LOCAT_PORT_2  0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:$LOCAL_PORT_1  0.0.0.0:*               LISTEN
tcp        0      0 172.20.0.3:34902         HostName:Port     
ESTABLISHED
udp        0      0 127.0.0.11:50743         0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path

# NOT WORKING
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:$LOCAL_PORT_2   0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.11:39857        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:$LOCAL_PORT_1   0.0.0.0:*               LISTEN
tcp        0      0 172.21.0.3:47994        Hostname:Port     ESTABLISHED
udp        0      0 127.0.0.11:42928        0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path

我在~/.ssh/config文件中指定了

LocalForward PORT PUBLIC_URL:PORT
而不是

LocalForward *:PORT PUBLIC_URL:PORT

你的问题是什么?对不起,我说得不好。当CMD手动指定本地转发时,为什么只包含`ssh-4-o StrictHostKeyChecking=no-N$TUNNEL\u HOST`的Dockerfile不起作用?
LocalForward *:PORT PUBLIC_URL:PORT