如何使用 ssh 隧道访问启用代理的互联网?

如何使用 ssh 隧道访问启用代理的互联网?

我有两台电脑(A&B,两者都运行 ubuntu 16.04) 并通过本地网络连接。PC-A 已连接互联网。我想使用 ssh 隧道在 PC-B 上浏览互联网。

我使用了 PC-B 中的命令 -

ssh -D 9999 user@IP_ADDRESS

然后我设置HTTP、HTTPS、FTP 代理空的和SOCKS代理“localhost”和端口 9999。

如果 PC-A 有 Internet 连接,不是需要代理设置,然后我可以使用上述命令在 PC-B 上浏览网络。

但如果 PC-A 有 Internet 连接,则需要HTTP 代理“xxx.yy.zz.zz” 和端口 8080 然后我无法使用上述命令浏览互联网并且终端显示以下错误:

"channel 3: open failed: connect failed: Connection refused".

我该怎么办?任何帮助我都感激不尽。

答案1

您是否考虑过在 PC-A 上运行代理服务器(可能是 squid)?然后,您可以在给定端口上从 PC-B 创建一个隧道,连接到 squid 守护进程在 PC-A 上的输入端口。

然后你可以配置 squid 来使用另一个上游代理(http://www.christianschenk.org/blog/using-a-parent-proxy-with-squid/)或根据需要直接连接到互联网。

答案2

我自己的问题的答案是:

如果 PC-A 具有通过代理 (proxy_ip:port) 连接的互联网,并且您想使用 ssh 通过本地网络连接在 PC-B 中访问 PC-A 的互联网连接,则在终端中执行此命令:

ssh -L random_port:proxy_ip:port username_A@ip_Address_A

让我们举个例子:

PC-A:

  • 用户名:linus
  • IP地址:192.168.55.55
  • 在代理上运行:192.168.11.11
  • 运行端口:8080

选择一个随机端口,7856(随机)

然后在 PC-B

ssh -L 7856:192.168.11.11:8080 [email protected]

然后更改网络设置:

  • HTTP/HTTPS 代理:localhost 或 172.0.0.1
  • PORT:随机端口(本例中为 7856)

现在您已连接互联网。

相关内容