我有一台没有上网的机器。 我有一台机器B可以访问互联网。
A&B可以通过ssh相互连接。
我想使用B的互联网连接从互联网库上安装一些程序(perl,R package等)。
这是可能的和我怎么能做到这一点?
谢谢。
如果A和B都使用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 ,然后使用scp或sftp将文件传输到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操作指南