在 CentOs 系统上通过 ssh 隧道安装程序

在 CentOs 系统上通过 ssh 隧道安装程序

我有一台无法访问互联网的机器 A。我有一台可以访问互联网的机器 B。

A 和 B 可以通过 ssh 互相连接。

我想使用 B 的互联网连接从互联网存储库在 A 上安装一些程序(perl、R 包等...)。

这可能吗?我该如何做?

谢谢。

答案1

如果A&B都使用 OpenSSH,则在主机的一个窗口中A执行以下操作:

ssh -D 1080 user@B

启动一个 SOCKS 代理,监听A:1080并通过 发送连接到请求的地址B

只要此连接处于建立状态,您就可以运行其他支持 SOCKSv4 或 SOCKSv5 代理(这与 HTTP 代理不同)的程序A

curl -x socks5h://localhost:1080 http://www.google.com/

你可以尝试http_proxy将环境变量设置为socks5h://localhost:1080但大多数程序可能希望这是一个实际的 http 代理并且无法与其通信。

另一个选择(可能更简单)就是将所有内容下载到主机上B,然后使用scpsftp将文件传输到A

答案2

使用 SSH 隧道是可能的:

在您的家庭服务器上:

ssh -R 9999:<proxy host>:<proxy port> user@remotehost

这将打开远程服务器上的端口 9999 并创建到代理的隧道。

在远程服务器上,您必须编辑yum.conf并添加以下内容:

proxy=http://127.0.0.1:9999

这将使用我们之前设置的隧道连接到代理。

如果您没有安装任何代理,则可以使用动态隧道。它仅在您的网络没有安装任何代理或使用透明代理时才有效。

在远程服务器上:

ssh -D 9999 user@ip-of-local-server

这将连接到您的本地服务器,打开端口 9999,并创建动态隧道。yum.conf更改将相同。

答案3

如果系统 A 无法获取官方存储库,您可以在系统 B 上设置本地镜像,并将其用作所有软件包的安装/更新存储库。

您可以在 CentOS 上找到详细的操作指南CentOS 维基

相关内容