作者:E4b9a6, 创建:2024-06-25, 字数:2369, 已阅:340, 最后更新:2024-06-25
国内的许多云服务器在安装 docker 或者访问 github 等国外资源时很慢甚至经常连不上
在本地开发时也会遇到这种无法访问的情况,本地往往使用网络代理来加速访问 github/docker 等资源
但在服务器上去去部署网络代理不方便,此时借助 ssh 连接来转发本地的网络加速代理来给服务器安装软件就方便多了
举例在阿里云的 Ubuntu2204 上安装 docker ,官方安装方法如下:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果不使用代理进行安装,访经常会访问不到 download.docker.com
网站从而安装失败
假设本地有一个网络加速代理 127.0.0.1:1080
,在 ssh 时带上 -R
参数,用于远程端口转发,如下:
ssh -R 11080:127.0.0.1:1080 username@server_ip
在该命令中,将本地的 127.0.0.1:1080
端口映射到了远程服务器的 11080
端口上让服务器可以通过本地代理访问外网
在 ssh 进入后,测试是否成功启用代理:
$ export https_proxy=http://127.0.0.1:11080
$ export http_proxy=http://127.0.0.1:11080
$ curl cip.cc
IP : 4.4.4.4
地址 : 美国 加利福尼亚州 洛杉矶
运营商 : hosteons.com
数据二 : 美国 | 新加坡HostEONS私人有限公司(美芝路5001号黄金坊04-01号)美国Psychz数据中心洛杉矶节点
数据三 : 美国加利福尼亚
URL : http://www.cip.cc/4.4.4.4
$ sudo curl cip.cc
IP : 202.202.202.202
地址 : 中国 河南 洛阳
运营商 : 电信
数据二 : 河南省洛阳市 | 电信
数据三 : 中国河南省洛阳市 | 电信
URL : http://www.cip.cc/202.202.202.202
可以看到远程服务器已经成功获取到本地 1080 的网络代理
但 sudo 权限又不继承用户非安全环境变量如 http_proxy
和 https_proxy
,所以没有使用网络代理
而安装许多软件都需要使用到 sudo 权限,那么可以使用 sudo -E
来保留用户的环境变量,如下:
$ sudo -E curl cip.cc
IP : 4.4.4.4
地址 : 美国 加利福尼亚州 洛杉矶
运营商 : hosteons.com
数据二 : 美国 | 新加坡HostEONS私人有限公司(美芝路5001号黄金坊04-01号)美国Psychz数据中心洛杉矶节点
数据三 : 美国加利福尼亚
URL : http://www.cip.cc/4.4.4.4