apt-get 通过隧道代理安装,但只能从客户端使用 ssh
apt-get install via tunnel proxy but ssh only from client side
所以...这是我的问题:
我可以从我的机器访问 VPN。我可以通过 SSH 访问 VPN 中的服务器,但是这台机器从内到外无法访问,因为防火墙阻止了反向 ssh 连接。所以我不能通过隧道使用互联网来使用apt-get。
如何模拟:
sudo ssh -D 9999 root@<machineoutsidevpn>
但来自 VPN 外部。
或者有什么方法可以使用 Internet 连接来安装软件包?
一个选项是启用 SSH 隧道。这可以让你 运行 另一个协议中的 SSH 会话,这个选项可以让你绕过防火墙,让它认为传入连接实际上是一个 http 端口 80 回复而不是端口 21。下面是一个例子,你可以需要根据自己的喜好进行微调。
ssh -L 9000:serverIpAddress:80 user@example.com
祝你好运!
设置:
计算机 A
- 可以上网
- 可以访问计算机 B
- 已安装 SSH
计算机 B
- 无法访问互联网
- OpenSSH 服务器已安装
步骤:
ssh 进入计算机 B 从 计算机 A
sudo ssh -R <selected port>:us.archive.ubuntu.com:80 user@computerb.host
编辑计算机 B 的 /etc/apt/apt.conf
以包含以下行:
Acquire::http::Proxy "http://localhost:<selected port>";
Acquire::https::Proxy "https://localhost:<selected port>";
运行 您的 apt-get update
或 install
或 upgrade
在计算机 B 上它应该可以工作。
一些注意事项:
- 您必须在使用计算机 B 访问 apt-get 存储库时保持从计算机 A 到计算机 B 的原始 ssh 会话处于活动状态。
- 您不必使用相同的 ssh 连接来使用隧道(这意味着如果您有多个 ssh 连接到计算机 B,它们应该都可以工作)
使用腻子
这也可以使用 Putty 来实现(假设计算机 A 是 Windows 机器)。
- 启动会话时,select SSH --> 隧道
- 源端口:
<selected port>
- 目的地:
us.archive.ubuntu.com:80
- Select "Remote" 单选按钮
- Select "Add" 按钮
- 像往常一样配置您的会话。
- 按照上面的步骤 2 和 3 进行操作
安装 proxychains 和 tmux:你可能会遇到这样的事情:
sudo ssh -R 8080:us.archive.ubuntu.com:80 user@computerb.host
echo 'Acquire::http::Proxy "http://localhost:8080";' | sudo tee /etc/apt/apt.conf.d/proxy.conf
apt-get update
apt-get install proxychains tmux
sudo rm /etc/apt/apt.conf.d/proxy.conf
注意到最后一行取消了 apt 代理配置吗?
拥有代理链和 tmux 后,您可以获得更可靠的操作,并且无需时髦的 apt 配置更改,pip / curl 等也可以工作。
首先,启动 tmux。 (快速入门,使用 CTRL-B
而不是另一个键,'c' 用于另一个新的 shell,'n/p' 用于在 shell 之间循环,'d' 分离留下东西 运行ning).
tmux
接下来,我们将从孤立的计算机建立一个 ssh 连接回到它可以通过 SSH 连接到互联网的任何计算机,我们称之为 server
。
ssh -f -NT -M -S ~/.ssh/ssh_socket_for_proxychains -D 127.0.0.1:17471 server
这似乎没有做任何事情,因为它 运行 在后台运行。用ps aux |grep ssh
左右就可以看到了。
现在,配置 /etc/proxychains.conf
:
sudo nano /etc/proxychains.conf
将最后一行从 socks4 127.0.0.1 9050
更改为 socks5 127.0.0.1 17471
。
最后,您现在可以 运行 诸如 sudo proxychains apt upgrade -y
和 proxychains pip install ...
之类的东西而不会失败。
作为奖励,您可以分离 tmux 会话 (CTRL-b,d) 并稍后返回(ssh 返回,然后 tmux a
)。
对于 raspberrypi,如果您将 'us.archive.ubuntu.com' 更改为 'archive.raspberrypi.org',它会起作用,对于随机 debian,您可能会幸运地使用 'ftp.us.debian.org'
对我来说,用例就像 raspi 在一个独立的静态 ip 网络上,我有另一台服务器有两个网络连接(一个可以访问互联网,另一个连接到隔离的 lan),它不路由:它是运行正在使用 trueNAS,并且 lan 处于隔离状态。
但它确实有我可以 ssh 进入的 opensshd,然后 ssh 到 pi。
在这种情况下,它的独立局域网 IP 地址是 pi 连接回的 'server'。它是获取代理链和 tmux 的 pi,然后可以通过 apt 进行更新。
感谢 James Mertz 的 ssh -R
部分,但它仅适用于 http 流量,任何具有 https URL 的流量都会失败;它不适用于 pip:从一堆不同的随机服务器获取东西的地方。不过,它足以用来获取代理链。
proxychains howto 部分来自 https://yuzhangbit.github.io/tools/use-apt-get-behind-socks5-proxy/
所以...这是我的问题:
我可以从我的机器访问 VPN。我可以通过 SSH 访问 VPN 中的服务器,但是这台机器从内到外无法访问,因为防火墙阻止了反向 ssh 连接。所以我不能通过隧道使用互联网来使用apt-get。
如何模拟:
sudo ssh -D 9999 root@<machineoutsidevpn>
但来自 VPN 外部。 或者有什么方法可以使用 Internet 连接来安装软件包?
一个选项是启用 SSH 隧道。这可以让你 运行 另一个协议中的 SSH 会话,这个选项可以让你绕过防火墙,让它认为传入连接实际上是一个 http 端口 80 回复而不是端口 21。下面是一个例子,你可以需要根据自己的喜好进行微调。
ssh -L 9000:serverIpAddress:80 user@example.com
祝你好运!
设置:
计算机 A
- 可以上网
- 可以访问计算机 B
- 已安装 SSH
计算机 B
- 无法访问互联网
- OpenSSH 服务器已安装
步骤:
ssh 进入计算机 B 从 计算机 A
sudo ssh -R <selected port>:us.archive.ubuntu.com:80 user@computerb.host
编辑计算机 B 的
/etc/apt/apt.conf
以包含以下行:Acquire::http::Proxy "http://localhost:<selected port>"; Acquire::https::Proxy "https://localhost:<selected port>";
运行 您的
apt-get update
或install
或upgrade
在计算机 B 上它应该可以工作。
一些注意事项:
- 您必须在使用计算机 B 访问 apt-get 存储库时保持从计算机 A 到计算机 B 的原始 ssh 会话处于活动状态。
- 您不必使用相同的 ssh 连接来使用隧道(这意味着如果您有多个 ssh 连接到计算机 B,它们应该都可以工作)
使用腻子
这也可以使用 Putty 来实现(假设计算机 A 是 Windows 机器)。
- 启动会话时,select SSH --> 隧道
- 源端口:
<selected port>
- 目的地:
us.archive.ubuntu.com:80
- Select "Remote" 单选按钮
- Select "Add" 按钮
- 像往常一样配置您的会话。
- 按照上面的步骤 2 和 3 进行操作
安装 proxychains 和 tmux:你可能会遇到这样的事情:
sudo ssh -R 8080:us.archive.ubuntu.com:80 user@computerb.host
echo 'Acquire::http::Proxy "http://localhost:8080";' | sudo tee /etc/apt/apt.conf.d/proxy.conf
apt-get update
apt-get install proxychains tmux
sudo rm /etc/apt/apt.conf.d/proxy.conf
注意到最后一行取消了 apt 代理配置吗?
拥有代理链和 tmux 后,您可以获得更可靠的操作,并且无需时髦的 apt 配置更改,pip / curl 等也可以工作。
首先,启动 tmux。 (快速入门,使用 CTRL-B
而不是另一个键,'c' 用于另一个新的 shell,'n/p' 用于在 shell 之间循环,'d' 分离留下东西 运行ning).
tmux
接下来,我们将从孤立的计算机建立一个 ssh 连接回到它可以通过 SSH 连接到互联网的任何计算机,我们称之为 server
。
ssh -f -NT -M -S ~/.ssh/ssh_socket_for_proxychains -D 127.0.0.1:17471 server
这似乎没有做任何事情,因为它 运行 在后台运行。用ps aux |grep ssh
左右就可以看到了。
现在,配置 /etc/proxychains.conf
:
sudo nano /etc/proxychains.conf
将最后一行从 socks4 127.0.0.1 9050
更改为 socks5 127.0.0.1 17471
。
最后,您现在可以 运行 诸如 sudo proxychains apt upgrade -y
和 proxychains pip install ...
之类的东西而不会失败。
作为奖励,您可以分离 tmux 会话 (CTRL-b,d) 并稍后返回(ssh 返回,然后 tmux a
)。
对于 raspberrypi,如果您将 'us.archive.ubuntu.com' 更改为 'archive.raspberrypi.org',它会起作用,对于随机 debian,您可能会幸运地使用 'ftp.us.debian.org'
对我来说,用例就像 raspi 在一个独立的静态 ip 网络上,我有另一台服务器有两个网络连接(一个可以访问互联网,另一个连接到隔离的 lan),它不路由:它是运行正在使用 trueNAS,并且 lan 处于隔离状态。 但它确实有我可以 ssh 进入的 opensshd,然后 ssh 到 pi。
在这种情况下,它的独立局域网 IP 地址是 pi 连接回的 'server'。它是获取代理链和 tmux 的 pi,然后可以通过 apt 进行更新。
感谢 James Mertz 的 ssh -R
部分,但它仅适用于 http 流量,任何具有 https URL 的流量都会失败;它不适用于 pip:从一堆不同的随机服务器获取东西的地方。不过,它足以用来获取代理链。
proxychains howto 部分来自 https://yuzhangbit.github.io/tools/use-apt-get-behind-socks5-proxy/