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 үйлдлүүдээ ашиглаж болно. Конструкторын интерфейс нь дотоод сокет талбарыг солих ажилтай програмын дэд классоос зайлсхийдэг.

Холбоотой нийтлэлүүд