Tumatanggap ang phpseclib 3 ng bukas na stream resource kung saan karaniwang tumatanggap ng hostname ang SSH/SFTP constructor nito. Ito ang pampublikong handoff point para sa koneksyong dinadala na sa pamamagitan ng proxy.

Una, nagtatag ang connector ng HTTP CONNECT o SOCKS tunnel patungo sa aktwal na SFTP server at port nito. Pagkatapos, ipasa ang naitatag na stream sa 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 ay isang nakaugnay nang stream, hindi proxy URL. Ang $expectedHostKey ay ang pinagkakatiwalaang public-key string ng server, na nakuha sa pamamagitan ng provisioning process ng application, sa format na ibinabalik ng phpseclib. Ang login credential ay maaaring ang sinusuportahang password o isang na-load na key object na pinili ng application.

Tukuyin kung ano ang ibinabalik ng connector

Ang stream ay dapat na patungo na sa SFTP server. Para sa HTTP CONNECT, nangangahulugan ito na tinanggap ng proxy ang destinasyon at naubos na ang kumpletong proxy response headers. Para sa SOCKS, dapat na matagumpay na natapos ang kaugnay na negosasyon. Anumang SSH byte na nabasa na lampas sa hangganang iyon ay dapat manatiling magagamit sa implementasyon ng SSH.

Sa puntong iyon ginagawa ng phpseclib ang SSH exchange at sinisimulan ang SFTP sa parehong stream. Magagamit ng application ang karaniwang SFTP operations nito. Iniiwasan ng constructor interface ang isang application subclass na ang trabaho ay palitan ang panloob na socket fields.

Kaugnay na mga artikulo