phpseclib 3 gba orísun ìṣàn tí ó ṣí sílẹ̀ ní ibi tí olùdá SSH/SFTP rẹ̀ ìbá ti gba orúkọ agbàlejò. Èyí ni ibi ìfàṣẹ́ gbangba fún ìsopọ̀ tí a ti ń gbé kọjá proxy.

Ní àkọ́kọ́, olùsopọ̀ dá ihò HTTP CONNECT tàbí SOCKS sí ẹrọ SFTP gidi àti ibudo rẹ̀. Lẹ́yìn náà, fi ìṣàn tí a ti dá náà ránṣẹ́ sí 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 jẹ́ ìṣàn tí a ti so tẹ́lẹ̀, kì í ṣe URL proxy. $expectedHostKey jẹ́ okùn kọ́kọ́rọ̀ gbangba tí a gbẹ́kẹ̀lé ti ẹrọ náà, tí a rí nípasẹ̀ ìlànà ìmúrasílẹ̀ ohun èlò náà, ní ọ̀nà tí phpseclib ń dá padà. Ẹ̀rí ìwọlé lè jẹ́ ọ̀rọ̀ìpamọ́ tí a ṣe àtìlẹ́yìn fún tàbí ohun kọ́kọ́rọ̀ tí a gbé wọlé tí ohun èlò náà yàn.

Ṣàlàyé ohun tí olùsopọ̀ ń dá padà

Ìṣàn náà gbọ́dọ̀ ti darí sí ẹrọ SFTP. Fún HTTP CONNECT, èyí túmọ̀ sí pé proxy ti gba ibùdó náà àti pé gbogbo àwọn àkọsílẹ̀ ìdáhùn proxy ti jẹ́ lílò. Fún SOCKS, ìdúnàdúrà tí ó yẹ gbọ́dọ̀ ti parí ní àṣeyọrí. Èyíkéyìí SSH byte tí a ti kà kọjá ààlà yẹn gbọ́dọ̀ wà fún ìmúṣẹ SSH.

Ní àkókò yẹn phpseclib ṣe ìpààrọ̀ SSH ó sì bẹ̀rẹ̀ SFTP lórí ìṣàn kan náà. Ohun èlò náà lè lo àwọn ìṣe SFTP rẹ̀ déédé. Ìpadé olùdá náà yẹra fún kíláàsì abẹ́lẹ̀ ohun èlò tí iṣẹ́ rẹ̀ yóò jẹ́ rọ́pò àwọn pápá sọ́kẹ́tì inú.

Àwọn àpilẹ̀kọ tó jọra