通过本地机器将服务器连接到互联网

通过本地机器将服务器连接到互联网

我可以通过 ssh 访问服务器来运行一些实验,并且需要通过互联网下载一些软件包来执行这些实验。不幸的是,服务器没有连接到互联网,或者阻止了传出连接,我不确定。但如前所述,我可以通过 ssh 连接到机器或通过 scp 从本地机器传输文件。

有没有办法通过本地机器中继服务器的互联网连接,以便下载所需的软件包?我研究过 ssh 隧道,但由于经验不足,没有成功。

编辑:服务器系统是 Ubuntu 14.04.4 LTS,我的本地机器是 mac os x,但我有一个 Ubuntu 虚拟机。

答案1

你可以。我曾经遇到过类似的情况,我使用从服务器到客户端的 ssh 连接来设置 SOCKS 代理。你可以直接在标志的帮助下进行设置-D 端口号(例如 10001)从服务器到客户端建立 SSH 连接时。

(在服务器上,与客户端建立 SSH 连接并保持打开状态:)

ssh -D 10001客户

随后,您可以使用代理链在另一个终端中,允许程序通过新创建的 SOCKS 代理与外界建立 TCP 连接。proxychains 的配置非常简单,只需在 proxychains.conf 文件中添加一行即可:

socks5 127.0.0.1 10001

通知代理链如何访问代理服务器。之后,您可以按以下方式使用代理链,例如告诉 wget 使用代理:

代理链 wget地址

一旦关闭第一个连接,代理就不复存在。

您没有提到您是否能够从服务器直接连接到客户端(可能是由于防火墙设置而无法连接?)。如果是这种情况,您仍然可以使用此方法,尽管您可以先建立反向隧道:

(在客户端,与服务器建立 SSH 连接并建立反向隧道:)

ssh -R 9999:本地主机:22服务器

这将与服务器建立连接,并创建一个端口(本例中为 9999),该端口通过端口 22(默认 SSH 端口)连接回客户端。然后,在服务器上,您可以通过此隧道与客户端建立连接:

ssh-p 9999-D 10001本地主机

如果您不想完全设置 SOCKS 代理,那么您最好从服务器到客户端建立 SSH 连接,并且如果您只想访问特定服务器,则建立到目的地的本地隧道(使用 -L)。

相关内容