phpseclib 3 SFTP duerch en etabléierte Proxy-Stream
Benotzt den ëffentleche Stream-Konstruktor vu phpseclib 3, fir SFTP duerch en etabléierten HTTP- oder SOCKS-Tunnel ze starten.
phpseclib 3 akzeptéiert eng oppe Stream-Ressource do wou säin SSH/SFTP-Konstruktor soss en Hostnumm kritt. Dat ass de ëffentlechen Iwwerreechungspunkt fir eng Verbindung, déi schonn duerch e Proxy geet.
Fir d'éischt setzt de Connector en HTTP CONNECT- oder SOCKS-Tunnel op den tatsächlechen SFTP-Server an de Port op. Duerno gëtt de etabléierte Stream un SFTP iwwerginn:
use phpseclib3\Net\SFTP;
$sftp = new SFTP($tunnel);
$actualHostKey = $sftp->getServerPublicHostKey();
if ($actualHostKey === false
|| !hash_equals($expectedHostKey, $actualHostKey)) {
throw new RuntimeException('Unexpected SFTP server key');
}
if (!$sftp->login($sftpUser, $sftpCredential)) {
throw new RuntimeException('SFTP login failed');
}
$tunnel ass en already verbonne Stream, net eng Proxy-URL. $expectedHostKey ass dem Server säin vertrauenswürdege ëffentleche Schlësselstring, deen iwwer de Provisioning-Prozess vun der Applikatioun kritt gëtt, am Format deen phpseclib zréckgëtt. D'Login-Identitéit kann dat ënnerstëtzt Passwuert oder en geluedent Schlësselobjekt sinn, dat d'Applikatioun auswielt.
Definéiert, wat de Connector zréckgëtt
De Stream muss schonn op den SFTP-Server féieren. Fir HTTP CONNECT heescht dat, datt de Proxy d'Destinatioun akzeptéiert huet an datt déi komplett Proxy-Äntwert-Header verbraucht goufen. Fir SOCKS muss déi entspriechend Verhandlung erfollegräich ofgeschloss sinn. All SSH-Byte, déi schonn iwwer dës Grenz gelies goufen, mussen der SSH-Implementatioun disponibel bleiwen.
Zu deem Zäitpunkt mécht phpseclib den SSH-Austausch a startet SFTP iwwer dee selwechte Stream. D'Applikatioun kann hir gewéinlech SFTP-Operatiounen notzen. Den Interface vum Konstruktor vermeit eng Applikatiouns-Ënnerklass, déi d'Aufgab hätt, intern Socket-Felder z'ersetzen.