PHPSeclib代理发送用户名和密码作为参数

时间:2019-02-05 11:22:32

标签: php sftp phpseclib http-tunneling

我正在使用PHPSECLIB将文件和XML发送到SFTP服务器。 在这种情况下,我尝试访问的服务器不在我的工作网络范围内。 要连接到外部互联网,我们需要一个代理来完成。 我需要做的是将此连接的代理配置为我需要的代理。

编辑-

我有以下代码,如何传递代理的用户名和密码?

   $proxyHost = '******'                             

    $fsock = fsockopen($proxyHost, $proxyPort); 
    $address = '*****'; 
    $port = '*****';
    $request = "CONNECT $address:$port HTTP/1.0\r\nContent-Length: 0\r\n\r\n"; 

    if(fputs($fsock, $request) != strlen($request)) {
        exit("premature termination"); 
    }
    $response = fgets($fsock); 

    $sftp   = new SFTP($fsock);

    .......

1 个答案:

答案 0 :(得分:0)

引用https://github.com/phpseclib/phpseclib/issues/1339#issuecomment-462224179

  

获得授权:

     

$fsock = fsockopen('127.0.0.1', 80, $errno, $errstr, 1);
if (!$fsock) {
    echo $errstr; exit;
}
fputs($fsock, "CONNECT website.com:22 HTTP/1.0\r\n");
fputs($fsock, "Proxy-Authorization: Basic " . base64_encode('user:pass') . "\r\n");
fputs($fsock, "\r\n");
while ($line = fgets($fsock, 1024)) {
    if ($line == "\r\n") {
        break;
    }
    //echo $line;
}    
$ssh = new Net_SSH2($fsock);
$ssh->login('user', 'pass');
echo $ssh->exec('ls -latr');
     

如果这不起作用,请运行脚本并告诉我您返回的标头是什么。摘要认证比基本认证更像是PITA,但这不是不可能的。

     

有关授权如何与HTTP代理一起工作的更多信息:

     

https://tools.ietf.org/html/rfc7235#section-4.3