phpseclib 3 SFTP орнотулган прокси агымы аркылуу
SFTP'ны орнотулган HTTP же SOCKS туннели аркылуу баштоо үчүн phpseclib 3'түн ачык агым конструкторун колдонуңуз.
phpseclib 3 ачык агым ресурсун кабыл алат, анын SSH/SFTP конструктору адатта хост атын ала турган жерде. Бул прокси аркылуу өтүп жаткан туташуу үчүн ачык өткөрүү пункту.
Алгач коннектор чыныгы SFTP серверине жана анын портуна HTTP CONNECT же SOCKS туннелин орнотот. Андан кийин орнотулган агымды 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 — туташкан агым, прокси URL эмес. $expectedHostKey — сервердин ишенимдүү ачык ачкыч сабы, колдонмонун даярдоо процесси аркылуу алынган, phpseclib кайтарган форматта. Кирүү далили колдоого алынган сырсөз же колдонмо тандаган жүктөлгөн ачкыч объектиси болушу мүмкүн.
Коннектор эмнени кайтарарын аныктаңыз
Агым мурун эле SFTP серверине алып барышы керек. HTTP CONNECT үчүн бул прокси максатты кабыл алганын жана прокси жообунун толук аталыштары сарпталганын билдирет. SOCKS үчүн тиешелүү сүйлөшүүлөр ийгиликтүү аякташы керек. Бул чектен ары мурун окулган бардык SSH байттары SSH ишке ашырылышы үчүн жеткиликтүү бойдон калышы керек.
Ошол учурда phpseclib SSH алмашууну аткарат жана ошол эле агымда SFTP'ны баштайт. Колдонмо өзүнүн кадимки SFTP операцияларын колдоно алат. Конструктор интерфейси ички сокет талааларын алмаштыруу милдетин аткарган колдонмо ички классын болтурбайт.