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

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

我遇到一个问题,在 cygwin 下,http_proxy 环境变量被忽略。我尝试使用大写和小写变量名,但 ssh 就是无法读取。

export HTTP_PROXY="http://user:[email protected]:8080/"

不使用代理

ssh [email protected]

使用代理

wget http://home.com/

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

答案1

您的问题不清楚,因为您没有解释您想要实现的目标。我猜一下,当然也可能是错的。我的猜测是:

  • 您想使用 ssh 从您的工作机器连接到home.com
  • ssh home.com无法工作(挂起或显示错误消息),因为您的工作防火墙阻止了传出连接;
  • user:[email protected]:8080是您在工作时在网络浏览器中配置的代理。

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

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

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

user:pass并在其中放置一行包含/path/to/corkscrew/authfile

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

或者,如果你的防火墙突破尝试失败,可以考虑安装Ajax终端在防火墙外的 Web 服务器上。

相关内容