通过SSH会话将Internet服务到远程计算机?


19

我通过SSH连接到远程/主机(同一网络/ LAN)的计算机可以访问Internet,但是主机却不能。

在主机上运行更新和安装软件包非常不便,因为这样我必须在本地启动代理,然后配置远程计算机以使用它。

所以我想知道是否有更简单的方法(例如,SSH或其他方法)?

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

plink通过Emacs 使用(如果有关系)。

Answers:


21

我们将其称为具有互联网访问权限的机器hasinet和没有互联网访问权限的机器noinet

如果你可以让SSH连接 noinet hasinet

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

noinet$ ssh -D 1080 hasinet

如果你只能做SSH连接 noinet hasinet

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

hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet

如何使用SOCKS代理

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


1
无需(当ssh -t -D 1080 localhost ssh -R 1080:localhost:1080 noinet一个命令需要时)在hasinet上安装袜子代理即可。
Patrick

2

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

在无法访问互联网的机器上运行

ssh -D 8080 machine_with_internet_access

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

然后安装诸如proxychainsredsocks之类的软件,配置它们以连接到localhost:8080,然后运行需要通过它们进行Internet访问的软件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.