Im使用PHPSECLIB向SFTP服务器发送文件和XML。在这种情况下,我试图访问的服务器在我的工作网络之外。要连接到外面的互联网,我们有一个代理。我需要做的是将此连接的代理配置为我需要的代理。
编辑--
我有以下代码,我如何传递我的代理的用户名和密码?
$proxyHost = '******'
$fsock = fsockopen($proxyHost, $proxyPort);
$address = '*****';
$port = '*****';
$request = "CONNECT $address:$port HTTP/1.0rnContent-Length: 0rnrn";
if(fputs($fsock, $request) != strlen($request)) {
exit("premature termination");
}
$response = fgets($fsock);
$sftp = new SFTP($fsock);
.......
报价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.0rn"); fputs($fsock, "Proxy-Authorization: Basic " . base64_encode('user:pass') . "rn"); fputs($fsock, "rn"); while ($line = fgets($fsock, 1024)) { if ($line == "rn") { break; } //echo $line; } $ssh = new Net_SSH2($fsock); $ssh->login('user', 'pass'); echo $ssh->exec('ls -latr');
如果这不起作用,那么运行脚本并告诉我你得到的标题是什么。摘要式身份验证比基本身份验证更像是一种PITA,但这并非不可能。
有关授权如何使用HTTP代理的更多信息:
https://www.rfc-editor.org/rfc/rfc7235#section-4.3