स्थापित प्रॉक्सी स्ट्रीम के माध्यम से phpseclib 3 SFTP
स्थापित HTTP या SOCKS टनल के माध्यम से SFTP शुरू करने के लिए 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 संचालन का उपयोग कर सकता है। कंस्ट्रक्टर इंटरफ़ेस ऐसे अनुप्रयोग उपवर्ग से बचता है जिसका कार्य आंतरिक सॉकेट फ़ील्ड बदलना होता।