我想使用docker容器来创建ssh隧道,因为在Mac上编译Obfuscated 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
我遇到的问题是它似乎连接但我无法通过使用127.0.0.1:6969作为代理连接到我的主机上的SOCKS代理。
我已尝试将其作为docker run -i -t NAME -p 127.0.0.1:6969:6969
和docker 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
感谢任何帮助!
答案 0 :(得分:1)
问题是您正在容器内创建localhost隧道。要使用该隧道,您需要位于docker容器内。
在docker run命令中使用-p 127.0.0.1:6969:6969
时。它表示容器中的端口6969
将接收来自您计算机的所有流量。但是容器将从分配给docker容器的IP接收相同的容器。这将是172.2.0.2
。
你在容器内的ssh隧道只是在收听127.0.0.1
而不是172.2.0.2
,所以它不会收到这样的流量。所以改变你的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
选项