【问题标题】:Proxy built with netcat not allowing http basic authentication使用 netcat 构建的代理不允许 http 基本身份验证
【发布时间】:2013-05-14 07:06:25
【问题描述】:

我使用nc 做了一个简单的代理服务器,这里是单行:

mkfifo queueueue
nc -l 8080 <queueueue | nc http://$JENKINS_HOSTNAME 80 >queueueue

它侦听端口 8080,然后将数据转发到与我们的 Jenkins 服务器的连接。 Jenkins 在 VPN 后面,我运行此代理的机器具有 VPN 访问权限。

在我的另一台机器上(没有 VPN 访问),我想curl Jenkins 服务器,这里是通过代理发起请求的命令:

http_proxy=10.1.10.10:8080 curl --user $JENKINS_USERNAME:$JENKINS_PASSWORD http://$JENKINS_HOSTNAME/api/json

客户端和代理机器在同一个网络,我可以在它们之间ping和ssh,另外,我知道客户端正在连接代理服务器,我认为客户端尝试时会出现故障验证,这是我尝试 curl 时的输出:

$ http_proxy=10.1.10.10:8080 curl --user $JENKINS_USERNAME:$JENKINS_PASSWORD http://$JENKINS_HOSTNAME/api/json
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="<some other url>">here</a>.</p>
<hr>
<address>Apache Server at $JENKINS_HOSTNAME Port 80</address>
</body></html>

如何使用 HTTP 基本身份验证通过这样的代理进行 curl?

【问题讨论】:

    标签: proxy netcat basic-authentication


    【解决方案1】:

    我会为此使用 ssh 而不是 netcat。

    为了避免混淆,我将具有 VPN 访问权限的节点称为“服务器”,将没有 VPN 访问权限的节点称为“客户端”。

    在服务器端,您只需要安装并运行 ssh 服务器(在我的测试中,我有 OpenSSH_5.9p1,OpenSSL 0.9.8r 2011 年 2 月 8 日)。

    在客户端,您需要执行以下操作:

    1) 在您的 /etc/hosts 文件中添加您的目标 URL 在服务器上解析的地址。我无法让 curl 通过代理运行 DNS 查找,这就是为什么这是必要的。

    2) 在服务器和客户端之间设置 ssh 密钥。虽然这不是必需的,但它让生活更轻松。

    3) 运行以下 ssh 命令让 ssh 充当 SOCKS 代理:

    user@host$ ssh -vND 9999 <server>
    

    -v 在那里,所以你可以看到 ssh 发生了什么, -N 告诉 ssh 不执行远程命令 - 这对于简单的端口转发很有用 -D 这个选项实际上是把你的本地请求转发到服务器

    4) 现在你应该可以运行上面的 curl 命令了,但是添加

    ---socks5 localhost:9999
    

    您的完整命令将如下所示:

    curl --user $USER:$PASSWORD --socks5 localhost:9999 http://$JENKINS/api/json
    

    如果我能弄清楚如何通过 ssh 从 curl 转发 DNS 请求,我会更新票证。

    编辑:格式,糟糕的语法。

    【讨论】:

    • 用 -x 试试 curl,例如:curl -x socks5h://hello:world@127.0.0.1:8888 http://example.com
    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多