SFTP របស់ phpseclib 3 តាមរយៈស្ទ្រីមប្រូកស៊ីដែលបានបង្កើត
ប្រើអ្នកសាងស្ទ្រីមសាធារណៈរបស់ phpseclib 3 ដើម្បីចាប់ផ្តើម SFTP តាមរយៈផ្លូវរូង HTTP ឬ SOCKS ដែលបានបង្កើតរួច។
phpseclib 3 ទទួលយកធនធានស្ទ្រីមបើកចំហ នៅកន្លែងដែលអ្នកសាង SSH/SFTP របស់វានឹងទទួលឈ្មោះម៉ាស៊ីន។ នេះជាចំណុចប្រគល់សាធារណៈសម្រាប់ការតភ្ជាប់ដែលកំពុងឆ្លងកាត់ប្រូកស៊ីរួចហើយ។
ដំបូង កម្មវិធីភ្ជាប់បង្កើតផ្លូវរូង HTTP CONNECT ឬ SOCKS ទៅកាន់ម៉ាស៊ីនមេ SFTP ពិតប្រាកដ និងច្រករបស់វា។ បន្ទាប់មក បញ្ជូនស្ទ្រីមដែលបានបង្កើតទៅ 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 ធម្មតារបស់វា។ ចំណុចប្រទាក់អ្នកសាងជៀសវាងថ្នាក់រងកម្មវិធីដែលភារកិច្ចគឺជំនួសវាលសុខេតខាងក្នុង។