phpseclib 3 SFTP o'rnatilgan proksi oqimi orqali
SFTP ni o'rnatilgan HTTP yoki SOCKS tunnel orqali boshlash uchun phpseclib 3 ning ommaviy oqim konstruktoridan foydalaning.
phpseclib 3 ochiq oqim resursini qabul qiladi, uning SSH/SFTP konstruktori odatda xost nomini oladigan joyda. Bu proksi orqali allaqachon olib borilayotgan ulanish uchun ommaviy topshirish nuqtasi.
Avval konnektor haqiqiy SFTP serveriga va uning portiga HTTP CONNECT yoki SOCKS tunnelini o'rnatadi. So'ngra o'rnatilgan oqim SFTP ga beriladi:
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 allaqachon ulangan oqim, proksi URL emas. $expectedHostKey serverning ishonchli ommaviy kalit satri bo'lib, ilovaning tayyorlash jarayoni orqali olinadi, phpseclib qaytaradigan formatda. Kirish ma'lumoti qo'llab-quvvatlanadigan parol yoki ilova tanlagan yuklangan kalit obyekti bo'lishi mumkin.
Konnektor nima qaytarishini aniqlang
Oqim allaqachon SFTP serveriga olib borishi kerak. HTTP CONNECT uchun bu proksi manzilni qabul qilganini va to'liq proksi javob sarlavhalari iste'mol qilinganini bildiradi. SOCKS uchun tegishli muzokaralar muvaffaqiyatli yakunlangan bo'lishi kerak. Bu chegaradan tashqarida allaqachon o'qilgan har qanday SSH bayti SSH amalga oshirilishi uchun ochiq qolishi kerak.
Shu paytda phpseclib SSH almashinuvini amalga oshiradi va xuddi shu oqimda SFTP ni boshlaydi. Ilova odatdagi SFTP operatsiyalaridan foydalanishi mumkin. Konstruktor interfeysi ichki soket maydonlarini almashtirish vazifasi bo'lgan ilova quyi sinfidan qochadi.