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.

Ähnlech Artikelen