使用 ssh 连接 Windows 机器在 Linux 机器上访问互联网

使用 ssh 连接 Windows 机器在 Linux 机器上访问互联网

给定一台windows机器A和一台linux机器B,我尝试实现解决方案(另请阅读网站)通过A访问B上的互联网(A机器可以访问互联网)。

在windows机器A上,我打开一个powershell并写入

netsh winhttp set proxy 127.0.0.1:8000

在linux机器B上,我在/etc/environment文件中设置

export http_proxy=http://127.0.0.1:7000
export https_proxy=http://127.0.0.1:7000

然后我使用以下命令获取变量

source /etc/environment

然后,按照引用的链接,我做了一个远程端口转发(据我所知,这意味着Linux机器B的端口7000上发生的所有事情都将被转发到Windows机器A的端口8000),所以我在a中写了这个Windows机器A上的终端:

ssh -R 7000:localhost:8000 user@hostB

现在我想我已经完成了。然而,当我在 Linux 机器 B 上尝试这个命令时

wget http://google.com

我明白了

--2022-04-03 10:08:28--  http://google.com/
Resolving localhost (localhost)... 127.0.0.1, ::1
Connecting to localhost (localhost)|127.0.0.1|:7000... connected.
Proxy request sent, awaiting response... No data received.
Retrying.

--2022-04-03 10:08:31--  (try: 2)  http://google.com/
Connecting to localhost (localhost)|127.0.0.1|:7000... connected.
Proxy request sent, awaiting response... No data received.
Retrying.

--2022-04-03 10:08:35--  (try: 3)  http://google.com/
Connecting to localhost (localhost)|127.0.0.1|:7000... connected.
Proxy request sent, awaiting response... No data received.
Retrying.
...

我是个初学者,所以如果有人能解释我如何让它发挥作用,我将不胜感激。

答案1

如果您的Linux系统上的应用程序可以使用SOCKS,则可以使用SOCKS Proxyssh来方便网络连接

视窗:

ssh -D 1080 linuxServer    # add -fN to run in the background

现在,您有一个 SOCKS 服务器正在侦听 linuxServer 上的端口 1080,并通过 ssh 会话路由回 Windows 客户端。

Linux:

您需要安装 SOCKS 代理,例如,tsocks或者使用 SOCKS 感知应用程序,例如wget.运行它们root(用于sudo -s获取 root shell):

apt install tsocks                                  # Install the tool
cp -p /etc/tsocks.conf /etc/tsocks.conf.ORIGINAL    # I like to save configuration files before changing them
echo server = 127.0.0.1 >/etc/tsocks.conf           # Minimal configuration

现在,您可以为网络命令或应用程序添加前缀,以tsocks使用您在第一步中创建的 SOCKS 代理:

tsocks wget https://bbc.co.uk/

并非所有命令都适用于tsocks.特别是ping无法工作,您将收到错误,ERROR: ld.so: object 'libtsocks.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.

相关内容