通过CentOS系统上的ssh tunelling来安装程序

我有一台没有上网的机器。 我有一台机器B可以访问互联网

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

我想使用B的互联网连接从互联网库上安装一些程序(perl,R package等)。

这是可能的和我怎么能做到这一点?

谢谢。

如果AB都使用OpenSSH,则在主机A一个窗口上执行:

 ssh -D 1080 user@B 

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

只要此连接已启动,您就可以在A :上运行支持SOCKSv4或SOCKSv5代理的其他程序(这与HTTP代理不同)

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

您可以尝试http_proxy环境variables设置为socks5h://localhost:1080但大多数程序可能会认为这是一个实际的http代理,并且无法与之通信。

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

有可能使用SSH隧道:

在您的家庭服务器上:

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

这将打开您的远程服务器上的端口9999,并创build一个到您的代理的tunel。

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

 proxy=http://127.0.0.1:9999 

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

如果您没有任何代理,则可以使用dynamic调整。 它只适用于你的networking没有任何代理,或者它使用透明代理。

在远程服务器上:

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

这将连接到您的本地服务器,打开端口9999,并创build一个dynamic隧道。 yum.conf变化将是一样的。

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

在CentOS Wiki中可以find详细的CentOS操作指南