我有一台服务器,只能通过端口 22 访问外部世界(用于从服务器到其他计算机的 ssh 使用)。
我想通过apt-get
此服务器安装一些软件包。
我可以通过 ssh 隧道连接到所有端口都可以访问互联网的超级机器来实现此目的吗?
如果是这样,怎么办?因为如果我通过 ssh 启动到我的超级机器的隧道,超级机器的 sshd 会在端口 22 上等待。我假设我不能将同一个端口 22 重复用于隧道,可以吗?
还有其他解决方案吗?
答案1
尝试通过 sshocks 代理运行它:
echo 'Acquire::socks::proxy "socks://localhost:3128/";' | sudo tee -a /etc/apt/apt.conf
ssh -CND localhost:3128 [email protected]
在另一个终端会话中:
sudo apt-get whatever you need
答案2
我无法得到另一个回答上班。
我在一个客户的网络中有一个树莓派,它阻止了端口 80。所以我在自己的机器上安装了 polipo (袜子/http 代理),在该树莓派上通过 ssh 连接,同时创建一个到 polipo-proxy 的隧道。
要安装 polipo(我在 Ubuntu 16.04 机器上使用它):
sudo apt install polipo
这将在 127.0.0.8123 上运行,这足以满足我们的需求。连接到远程机器,同时打开隧道:
ssh -R 8123:localhost:8123 myuser@client_maschine02
现在您需要告诉apt
使用代理。我用这个命令来做到这一点:
echo 'Acquire::http::proxy "http://localhost:8123";' | sudo tee -a /etc/apt/apt.conf.d/proxy.conf
现在您可以像往常一样使用 apt 了。