phpseclib 3k irekitako fluxu-baliabide bat onartzen du, non bere SSH/SFTP konstruktoreak bestela ostalari-izena jasoko lukeen. Hori da proxya bidez jada garraiatzen ari den konexio baterako entrega-puntu publikoa.

Lehenik, konektoreak HTTP CONNECT edo SOCKS tunel bat ezartzen du benetako SFTP zerbitzarira eta bere portura. Gero, ezarritako fluxua SFTPri pasatzen zaio:

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 jada konektatutako fluxu bat da, ez proxy URL bat. $expectedHostKey zerbitzariaren konfiantzazko gako publikoaren katea da, aplikazioaren hornitze-prozesuaren bidez lortua, phpseclibek itzultzen duen formatuan. Saio-hasierako kredentziala onartutako pasahitza edo aplikazioak hautatutako kargatutako gako-objektua izan daiteke.

Zehaztu zer itzultzen duen konektoreak

Fluxuak jada SFTP zerbitzarira eraman behar du. HTTP CONNECTerako, horrek esan nahi du proxyak helmuga onartu duela eta proxyaren erantzun-goiburu osoak kontsumitu direla. SOCKSerako, dagokion negoziazioa arrakastaz osatu behar da. Muga horretatik haratago jada irakurritako SSH byteak SSH inplementazioaren eskura egon behar dute.

Une horretan phpseclibek SSH trukea egiten du eta SFTP abiarazten du fluxu berean. Aplikazioak bere ohiko SFTP eragiketak erabil ditzake. Konstruktorearen interfazeak saihesten du barneko socket eremuak ordezkatzea helburu duen aplikazioaren azpiklase bat.

Erlazionatutako artikuluak