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 కార్యకలాపాలను ఉపయోగించవచ్చు. కన్స్ట్రక్టర్ ఇంటర్‌ఫేస్ అంతర్గత సాకెట్ ఫీల్డ్‌లను భర్తీ చేసే పని ఉన్న అప్లికేషన్ ఉపవర్గాన్ని నివారిస్తుంది.

సంబంధిత వ్యాసాలు