我遇到一个问题,在 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_proxy
或https_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 服务器上。