phpseclib 3 açıq axın resursunu qəbul edir; onun SSH/SFTP konstruktoru əks halda host adı alırdı. Bu, artıq proxy vasitəsilə daşınan bağlantı üçün açıq ötürmə nöqtəsidir.

Əvvəlcə konnektor real SFTP serverinə və portuna HTTP CONNECT və ya SOCKS tuneli qurur. Sonra qurulmuş axını SFTP-yə ötürün:

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 artıq qoşulmuş axındır, proxy URL-i deyil. $expectedHostKey serverin etibarlı açıq açar sətri olub, tətbiqin təchizat prosesi ilə əldə edilir və phpseclib-in qaytardığı formatdadır. Giriş etimadnaməsi tətbiqin seçdiyi dəstəklənən parol və ya yüklənmiş açar obyekti ola bilər.

Konnektorun nə qaytardığını müəyyənləşdirin

Axın artıq SFTP serverinə aparmalıdır. HTTP CONNECT üçün bu, proxy-nin təyinatı qəbul etdiyini və tam proxy cavab başlıqlarının oxunduğunu bildirir. SOCKS üçün müvafiq danışıq uğurla tamamlanmalıdır. Bu hüduddan sonra artıq oxunmuş istənilən SSH baytı SSH tətbiqi üçün əlçatan qalmalıdır.

Bu anda phpseclib SSH mübadiləsini həyata keçirir və eyni axın üzərində SFTP başladır. Tətbiq adi SFTP əməliyyatlarından istifadə edə bilər. Konstruktor interfeysi daxili socket sahələrini dəyişmək vəzifəsi olan tətbiq alt sinfini aradan qaldırır.

Əlaqəli məqalələr