以下可以通过 SSH 实现吗?
涉及三台机器:
A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B
我想设置一个 SOCKS 代理。我希望能够在家里的本地计算机上浏览网页,就像在实验室一样。这是因为有些网站只能通过学校的公共 IP 访问。
所以我想在主机 C 上运行 SOCKS 代理。但我无法让它在主机 A 上工作。
我连接到网关,并从网关连接到工作站。但我无法让网关正确地传输来自代理的流量和向代理传输流量。
我怎样才能做到这一点?
答案1
三种略有不同的方法。(将 $PORTX 和 $PORTY 替换为您选择的端口号。)
第一种方法:ProxyCommand
machine-a$ ssh -f -N -D $PORT -oProxyCommand="ssh -W %h:%p machine-b" machine-c
第二种方法:
从 A 连接到 B,并使用 的“本地转发
$PORT
” 。localhost:$PORT
machine-a$ ssh -L $PORT:localhost:$PORT machine-b
从 B 连接到 C,并启用“动态转发”。
machine-b$ ssh -f -N -D $PORT machine-c
配置您的浏览器以使用代理。
localhost:$PORT
步骤 1 和步骤 2 可以概括为:
ssh -f -L $PORT:localhost:$PORT machine-b "ssh -f -N -D $PORT machine-c"
第三种方法:
从 A 连接到 B,并使用 的“本地转发
$PORTX
”machine-c:22
。machine-a$ ssh -f -N -L $PORTX:machine-c:22 machine-b
通过隧道从 A 连接到 C,使用“动态转发”。
machine-a$ ssh -f -N -D $PORTY localhost -p $PORTX
-f -N
(如果您也想使用相同的隧道进行交互式连接,则可以省略。)配置您的浏览器以使用代理。
localhost:$PORTY
答案2
对于 AWS EMR Sock Proxy,以下是应用的步骤。假设我们有两个跳转场景,如下所示
[your-laptop] --<ssh key1>--> [Jump-Box] --<ssh key2>--> [EMR-Master]
你已经设置福克斯代理在您的浏览器中。在开始步骤之前激活它。
步骤 1. 登录 Jump Box
ssh -i ~/.ssh/key1 ec2-用户@
第 2 步。在跳转框上设置动态隧道,假设 Key2 存在。
ssh -i ~/key2 -N -D 8157 hadoop @
步骤3.在 ssh 客户端上打开一个新的控制台并设置隧道。
ssh -i ~/.ssh/key1 -L 8157:localhost:8157 ec2-user@ -N