我的 ubuntu 服务器被 VPN 封住了。网关以某种方式修补了证书,所以我的所有 https 连接都显示“失败”
$ curl https://www.google.com
curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: http://curl.haxx.se/docs/sslcerts.html
我的 CA 证书已更新。这不是问题。
我需要设置一个可以处理 https 的临时代理来更新该盒子。
我尝试建立一个ssh -D 8080 user@my_home_pc
隧道。Netstat 报告端口打开:
$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN <---
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
APT 用途https_proxy环境变量。Sudo 的 -E 选项保留环境变量。
$ https_proxy=https://localhost:8080 sudo -E apt-get update
Ign https://get.docker.com docker InRelease
Ign https://get.docker.com docker Release.gpg
Ign https://get.docker.com docker Release
Ign https://get.docker.com docker/main i386 Packages/DiffIndex
Ign https://get.docker.com docker/main Translation-en
Err https://get.docker.com docker/main i386 Packages <----
Proxy CONNECT aborted <----
你要如何设置 ssh 隧道代理?考虑到我只能通过 ssh 访问外部(除了无用的网关)。谢谢。
编辑:在我的家用电脑上将 AllowTcpForwarding 设置为是
# /etc/ssh/sshd_config
AllowTcpForwarding yes
答案1
这个答案不被视为答案,而是一种解决方法。
虽然不是最终版本,但是是一种解决方法。
在这种情况下,无法访问的站点是https://get.docker.com
方法:
- 伪造 get.docker.com 的 IP
- SSH 隧道从外部链接到 get.docker.com 的端口。
程序:
将 get.docker.com 添加到 /etc/hosts
cat "127.0.0.1 get.docker.com" >> /etc/hosts
通过 SSH 连接到未屏蔽的盒子并转发。必须使用须藤因为我们将转发低于 1024 的端口。
sudo ssh -L 443:get.docker.com:443 user@myhomepc
在另一个终端上,照常安装所有内容。
哦,完成后记得删除 /etc/hosts 上添加的行。