如何在托pipe容器中创buildSSH隧道,其中的主机可以访问socks代理?

我想使用docker容器来创buildSSH隧道,因为在Mac上有编译混淆OpenSSH的问题,因为它在Ubuntu上很简单。

这是我正在使用的docker文件

FROM rastasheep/ubuntu-sshd:16.04 RUN apt-get update RUN apt-get install -y software-properties-common python-software-properties RUN add-apt-repository ppa:zinglau/obfuscated-openssh RUN apt-get update RUN apt-get install -y openssh-server RUN apt-get update ADD ./Key.pem /var/www/ CMD ["ping", "google.com","-c 3"] ENTRYPOINT ssh -z -Z obfuscatedkey -4 -i "/var/www/Key.pem" -N -p 53 -D 6969 ubuntu@REMOTE_SERVER_ON_AWS -v EXPOSE 6969 

我得到的问题是它似乎连接,但我不能连接到我的主机上的SOCKS代理使用127.0.0.1:6969作为代理。

我已经尝试运行它作为docker run -i -t NAME -p 127.0.0.1:6969:6969docker run -i -t NAME -P

但是ssh隧道冻结了这一步

 debug1: Authentication succeeded (publickey). Authenticated to REMOTE_SERVER_ON_AWS ([IP_ADDRESS]:53). debug1: Local connections to LOCALHOST:6969 forwarded to remote address socks:0 debug1: Local forwarding listening on 127.0.0.1 port 6969. debug1: channel 0: new [port listener] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: pledge: network debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0 

任何帮助表示赞赏谢谢!

问题是你正在容器中创build一个localhost隧道。 要使用该隧道,您需要位于泊坞窗容器内。

在docker run命令中使用-p 127.0.0.1:6969:6969时。 它说从容器的端口6969将收到您的机器的所有stream量。 但容器将从分配给docker集装箱的IP接收相同的信息。 这将是像172.2.0.2

你在容器里的ssh隧道172.2.0.2 127.0.0.1而不是172.2.0.2 ,所以它不会收到这样的stream量。 所以改变你的Dockefile线

 ENTRYPOINT ssh -z -Z obfuscatedkey -4 -i "/var/www/Key.pem" -N -p 53 -D 6969 ubuntu@REMOTE_SERVER_ON_AWS -v 

 ENTRYPOINT ssh -z -Z obfuscatedkey -4 -i "/var/www/Key.pem" -N -p 53 -D 0.0.0.0:6969 ubuntu@REMOTE_SERVER_ON_AWS -v 

如果-D选项不能使用-L选项