通过 SSH 会话为远程机器提供 Internet 服务?

Ble*_*ers 22 ssh proxy internet

我通过 SSH 连接到远程/主机(同一网络/局域网)的机器可以访问 Internet,但主机不能。

在主机上运行更新和安装包变得非常不方便,因为我必须在本地启动代理,然后配置远程机器才能使用它。

所以我想知道是否有更简单的方法可以通过 SSH 或其他方式做到这一点?

我意识到其中的复杂性,但很想知道。

plink通过 Emacs使用(如果重要的话)。

sma*_*mmy 22

让我们调用具有 Internet 访问权限的机器hasinet和没有Internet 访问权限的机器noinet

如果您可以 建立 SSH 连接noinet hasinet

您可以使用 OpenSSH 的内置 SOCKS 代理轻松完成此操作。此命令将在noinet侦听端口时设置 SOCKS 代理1080

noinet$ ssh -D 1080 hasinet
Run Code Online (Sandbox Code Playgroud)

如果您只能建立 SSH 连接 noinet from hasinet

您可以在上运行 OpenSSH 的 SOCKS 代理hasinet,然后将端口从 转发noinethasinet。这可以通过这样的一个命令巧妙地完成(感谢@Patrick):

hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet
Run Code Online (Sandbox Code Playgroud)

如何使用SOCKS代理

您如何使用此代理将取决于应用程序。某些应用程序支持内置的 SOCKS 代理。如果是这种情况,您需要配置您的应用程序以在localhost:1080. 如果没有,您可以使用代理链或 redsocks,正如@sciurus 所建议的那样。如果您只需要为某些命令提供网络访问,tsocks是一种轻量级的解决方案。

  • 当noinet需要退出时,不必在hasinet上安装socks代理,只需`ssh -t -D 1080 localhost ssh -R 1080:localhost:1080 noinet`(是的一个命令)。 (2认同)

sci*_*rus 2

以下是通过 SSH 执行此操作的方法:

在没有互联网接入的机器上,运行

ssh -D 8080 machine_with_internet_access
Run Code Online (Sandbox Code Playgroud)

您可以将8080替换为任何未使用的端口号,

然后安装proxychainsredsocks等软件,将它们配置为连接到localhost:8080,并运行需要通过它们访问互联网的软件。