SFTP phpseclib 3 melalui Aliran Proksi yang Sudah Wujud
Gunakan pembina aliran awam phpseclib 3 untuk memulakan SFTP melalui terowong HTTP atau SOCKS yang sudah wujud.
phpseclib 3 menerima sumber aliran terbuka di tempat pembina SSH/SFTP-nya biasanya menerima nama hos. Itulah titik penyerahan awam untuk sambungan yang sudah dibawa melalui proksi.
Pertama, penyambung mewujudkan terowong HTTP CONNECT atau SOCKS ke pelayan SFTP sebenar dan portnya. Kemudian hantar aliran yang sudah wujud itu kepada 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 ialah aliran yang sudah bersambung, bukan URL proksi. $expectedHostKey ialah rentetan kunci awam dipercayai pelayan, diperoleh melalui proses peruntukan aplikasi, dalam format yang dikembalikan phpseclib. Kelayakan log masuk boleh jadi kata laluan yang disokong atau objek kunci dimuatkan yang dipilih aplikasi.
Tentukan apa yang dipulangkan penyambung
Aliran itu sudah mesti menuju pelayan SFTP. Untuk HTTP CONNECT, ini bermakna proksi telah menerima destinasi dan pengepala respons proksi yang lengkap telah digunakan. Untuk SOCKS, rundingan berkaitan mesti telah selesai dengan jayanya. Mana-mana bait SSH yang sudah dibaca melepasi sempadan itu mesti kekal tersedia kepada pelaksanaan SSH.
Pada ketika itu phpseclib melakukan pertukaran SSH dan memulakan SFTP pada aliran yang sama. Aplikasi boleh menggunakan operasi SFTP biasa. Antara muka pembina mengelakkan subkelas aplikasi yang tugasnya menggantikan medan soket dalaman.