phpseclib 3 inakubali rasilimali ya mtiririko iliyofunguliwa mahali ambapo kijenzi chake cha SSH/SFTP kingepokea jina la mwenyeji. Hii ni sehemu ya umma ya kukabidhi kwa muunganisho ambao tayari unasafirishwa kupitia proksi.

Kwanza, kiunganishi huanzisha handaki la HTTP CONNECT au SOCKS kwa seva halisi ya SFTP na bandari yake. Kisha pitisha mtiririko ulioimarishwa kwa 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 ni mtiririko uliounganishwa tayari, si URL ya proksi. $expectedHostKey ni mfuatano wa ufunguo wa umma unaoaminika wa seva, uliopatikana kupitia mchakato wa utayarishaji wa programu, katika muundo ambao phpseclib hurudisha. Kitambulisho cha kuingia kinaweza kuwa nenosiri linalotumika au kitu cha ufunguo kilichopakiwa ambacho programu huchagua.

Fafanua kile kiunganishi hurudisha

Mtiririko lazima tayari uelekeze kwa seva ya SFTP. Kwa HTTP CONNECT, hii inamaanisha proksi imekubali lengwa na vichwa kamili vya jibu vya proksi vimetumiwa. Kwa SOCKS, mazungumzo husika lazima yamekamilika kwa mafanikio. Baiti zozote za SSH zilizosomwa tayari zaidi ya mpaka huo lazima zibaki zinapatikana kwa utekelezaji wa SSH.

Wakati huo phpseclib hufanya ubadilishaji wa SSH na kuanza SFTP juu ya mtiririko huo huo. Programu inaweza kutumia shughuli zake za kawaida za SFTP. Kiolesura cha kijenzi kinaepuka kikundi kidogo cha programu ambacho kazi yake ingekuwa kuchukua nafasi ya sehemu za ndani za soketi.

Makala zinazohusiana