SFTP phpseclib 3 melalui Aliran Proxy yang Sudah Terbentuk
Gunakan konstruktor aliran publik phpseclib 3 untuk memulai SFTP melalui terowongan HTTP atau SOCKS yang sudah terbentuk.
phpseclib 3 menerima sumber daya aliran terbuka di tempat konstruktor SSH/SFTP-nya biasanya menerima nama host. Itulah titik penyerahan publik untuk koneksi yang sudah dibawa melalui proksi.
Pertama, konektor membentuk terowongan HTTP CONNECT atau SOCKS ke server SFTP sebenarnya dan portnya. Lalu teruskan aliran yang sudah terbentuk ke 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 adalah aliran yang sudah terhubung, bukan URL proksi. $expectedHostKey adalah string kunci publik tepercaya server yang diperoleh melalui proses penyediaan aplikasi, dalam format yang dikembalikan phpseclib. Kredensial masuk dapat berupa kata sandi yang didukung atau objek kunci termuat yang dipilih aplikasi.
Tentukan apa yang dikembalikan konektor
Aliran harus sudah menuju server SFTP. Untuk HTTP CONNECT, ini berarti proksi telah menerima tujuan dan header respons proksi yang lengkap telah dikonsumsi. Untuk SOCKS, negosiasi terkait harus sudah selesai dengan sukses. Setiap byte SSH yang sudah dibaca melewati batas itu harus tetap tersedia bagi implementasi SSH.
Pada titik itu phpseclib melakukan pertukaran SSH dan memulai SFTP pada aliran yang sama. Aplikasi dapat menggunakan operasi SFTP biasanya. Antarmuka konstruktor menghindari subkelas aplikasi yang tugasnya mengganti bidang soket internal.