phpseclib 3 akseptearret in iepen streamboarne dêr't syn SSH/SFTP-konstruktor oars in hostnamme krije soe. Dat is it iepenbiere oerjefpunt foar in ferbining dy't al fia in proxy giet.

Earst set de connector in HTTP CONNECT- of SOCKS-tunnel op nei de echte SFTP-tsjinner en poarte. Dêrnei wurdt de oprjochte stream oan SFTP jûn:

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 is in al ferbûne stream, gjin proxy-URL. $expectedHostKey is de fertroude iepenbiere-kaaistring fan 'e tsjinner, krigen fia it provisioningproses fan 'e applikaasje, yn it formaat dat phpseclib weromjout. De oanmeldgegevens kinne it stipe wachtwurd wêze of in laden kaaifoarwerp dat de applikaasje kiest.

Bepale wat de connector weromjout

De stream moat al nei de SFTP-tsjinner liede. Foar HTTP CONNECT betsjut dat de proxy de bestimming akseptearre hat en dat de folsleine proxy-antwurdkoppen ferbrûkt binne. Foar SOCKS moat de oanbelangjende ûnderhanneling mei súkses foltôge wêze. Alle SSH-bytes dy't al foarby dy grins lêzen binne, moatte beskikber bliuwe foar de SSH-ymplemintaasje.

Op dat punt docht phpseclib de SSH-útwikseling en start SFTP oer deselde stream. De applikaasje kin syn gewoane SFTP-operaasjes brûke. De konstruktor-ynterface foarkomt in applikaasje-subklasse waans taak it wêze soe om ynterne socketfjilden te ferfangen.

Relatearre artikelen