我正在使用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);
.......
答案 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代理一起工作的更多信息: