phpseclib 3 SFTP olemasoleva puhverserveri voo kaudu
Kasutage phpseclib 3 avalikku voo konstruktorit, et alustada SFTP-d olemasoleva HTTP või SOCKS tunneliga.
phpseclib 3 võtab vastu avatud voo ressursi seal, kus selle SSH/SFTP konstruktor saaks muidu hostinime. See on avalik üleandmispunkt ühendusele, mis juba liigub puhverserveri kaudu.
Esmalt loob konnektor HTTP CONNECT või SOCKS tunnelid tegeliku SFTP serveri ja pordini. Seejärel edastatakse loodud voog SFTP-le:
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 on juba ühendatud voog, mitte puhverserveri URL. $expectedHostKey on serveri usaldusväärne avaliku võtme string, mis saadakse rakenduse ettevalmistusprotsessi kaudu, phpseclib-i tagastatud vormingus. Sisselogimise mandaat võib olla toetatud parool või rakenduse valitud laaditud võtmeobjekt.
Määrake, mida konnektor tagastab
Voog peab juba viima SFTP serverini. HTTP CONNECT puhul tähendab see, et puhverserver on sihtkoha vastu võtnud ja täielikud puhverserveri vastuse päised on tarbitud. SOCKS puhul peab asjakohane läbirääkimine olema edukalt lõppenud. Kõik SSH baidid, mis on sellest piirist kaugemale juba loetud, peavad jääma SSH teostusele kättesaadavaks.
Sel hetkel teostab phpseclib SSH vahetuse ja alustab SFTP-d samal voog. Rakendus saab kasutada oma tavapäraseid SFTP toiminguid. Konstruktori liides väldib rakenduse alamklassi, mille ülesanne oleks asendada sisemisi pistikpesa välju.