phpseclib 3 akceptas malfermitan fluan rimedon tie, kie ĝia SSH/SFTP konstruilo alie ricevus gastigantnomon. Tio estas la publika transdona punkto por konekto jam portata tra prokuro.

Unue, la konektilo establas HTTP CONNECT aŭ SOCKS tunelon al la fakta SFTP servilo kaj haveno. Poste transdonu la establitan fluon al SFTP:

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 estas jam konektita fluo, ne prokura URL. $expectedHostKey estas la fidinda publikkleja ĉeno de la servilo, akirita per la provizprocezo de la aplikaĵo, en la formato redonata de phpseclib. La saluta akreditaĵo povas esti la subtenata pasvorto aŭ ŝargita ŝlosilobjekto elektita de la aplikaĵo.

Difinu, kion la konektilo redonas

La fluo jam devas konduki al la SFTP servilo. Por HTTP CONNECT, tio signifas, ke la prokuro akceptis la celon kaj ke la kompletaj prokuraj respondaj kaplinioj estas konsumitaj. Por SOCKS, la koncerna negocado devas esti sukcese finita. Ĉiuj SSH bajtoj jam legitaj preter tiu limo devas resti disponeblaj al la SSH realigo.

En tiu punkto phpseclib faras la SSH interŝanĝon kaj komencas SFTP sur la sama fluo. La aplikaĵo povas uzi siajn kutimajn SFTP operaciojn. La konstruila interfaco evitas aplikaĵan subklason, kies tasko estus anstataŭigi internajn soketajn kampojn.

Rilataj artikoloj