我有一台无法访问互联网的机器 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
,然后使用scp
或sftp
将文件传输到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 维基