通过 ssh 将互联网从 Windows 计算机共享到 Linux 计算机

通过 ssh 将互联网从 Windows 计算机共享到 Linux 计算机

我们可以通过 Windows 计算机访问安全的 Linux 基础架构。Linux 基础架构无法访问互联网,但 Windows 计算机可以。

在这台 Windows 机器上,我们安装了 Putty,可以用它连接到 Linux 基础设施。我们可以在两个方向(本地和远程)设置从 Windows 机器到 Linux 基础设施的隧道。

我想知道的是,我们是否可以通过使用 putty 的远程隧道,让 Linux 基础设施通过 Windows 主机访问互联网。

我们只需要 http/https 访问,因为这用于 debian 安全更新和新机器配置(目前由于缺乏互联网访问而无法安装任何软件包)。

这个模式在我的脑海里很清晰,但我不知道如何在实践中实现它:

在此处输入图片描述

我认为我需要在 Windows 机器上安装一种 http 代理,来监听远程隧道指向的端口?

如何配置前端 ssh 机器,以便其他以其为网关的主机通过 ssh 隧道进行连接?

此外,在这种情况下 DNS 将如何工作?

谢谢指点!

答案1

如果 SSH 服务器允许(这是大多数 Linux 发行版的默认设置),您可以使用 PuTTY(以及任何其他 SSH 客户端)设置 TCP 转发。

  • 确定 SSH 服务器上可用且未使用的端口,例如 8080。

  • 在 PuTTY 中设置一条规则,将 TCP 流量从 SSH 服务器上的 8080 端口通过 SSH 隧道传输到你的 Windows 系统,然后将其转发到你的代理服务器(proxy.example.com 端口 8080):

PuTTY 远程端口转发截图

  • 在 SSH 服务器上设置http_proxyhttps_proxy环境变量,然后许多应用程序将能够通过 ssh 端口转发使用该代理服务器(某些应用程序需要修改自己的设置才能使用代理):

    export http_proxy="http://username:password@localhost:8080"
    export https_proxy=$http_proxy
    

    并测试例如:

    curl -vv http://serverfault.com
    
  • 在其他服务器上(防火墙允许),您可以使用:

    export http_proxy="http://username:password@<ip-of-ssh-server>:8080"
    

此配置尚未测试。

相关内容