使用 cygwin + ssh 时,http_proxy 设置不起作用

Roy*_*ico 1 ssh cygwin

我有一个问题,在 cygwin 下,http_proxy env 变量被忽略。我试过大写和小写的变量名,只是没有被 ssh 读取。

export HTTP_PROXY="http://user:pass@proxy.job.com:8080/"
Run Code Online (Sandbox Code Playgroud)

不使用代理

ssh myuser@home.com
Run Code Online (Sandbox Code Playgroud)

使用代理

wget http://home.com/
Run Code Online (Sandbox Code Playgroud)

有没有人看到我做错了什么?

Gil*_*il' 9

你的问题不清楚,因为你没有解释你想要达到的目标。我要冒险猜测,这当然可能是错误的。我的猜测是:

  • 您想使用 ssh 从您的工作机器连接到home.com
  • ssh home.com 不起作用(挂起或显示错误消息),因为您的工作防火墙阻止了传出连接;
  • user:pass@proxy.job.com:8080 是您在工作时在 Web 浏览器中配置的代理。

由于 ssh 使用 ssh 协议,而不是 http 或 https 协议,因此它不关心http_proxyorhttps_proxy变量。

有一种方法可以通过 https 代理隧道传输 ssh 流量。代理无法区分 ssh 流量和 https 流量,因为它们都是加密的。可以执行此操作的三个程序是 netcat(OpenBSD 版本)、corkscrew 和 connect-proxy。我将举一个我知道在 Cygwin 中提供的开瓶器示例。在您的.ssh/config文件中使用以下设置:

寄宿家庭
主机名 home.com
用户 myuser
ProxyCommand /usr/bin/corkscrew proxy.job.com 8080 %h %p /path/to/corkscrew/authfile

并放置一行包含user:passin /path/to/corkscrew/authfile

某些代理不允许您连接到端口 22(正常的 ssh 端口),只能连接到端口 443(正常的 https 端口)。如果您可以控制 上的服务器home.com,您也可以让它侦听端口 443:很可能您想要将 443 添加到文件中的Portsshd_config,或者重定向家庭路由器上端口 443 上的传入连接到 sshd 机器上的端口 22。然后添加Port 443下面HostName的线.ssh/config

或者,如果您的防火墙穿透工作失败,请考虑在防火墙外的 Web 服务器上安装Ajaxterm