phpseclib 3 SFTP olemassa olevan välityspalvelinvirran kautta
Käytä phpseclib 3:n julkista virran konstruktoria SFTP:n aloittamiseen olemassa olevan HTTP- tai SOCKS-tunnelin kautta.
phpseclib 3 hyväksyy avoimen virtalähteen siinä, missä sen SSH/SFTP-konstruktori muuten saisi isäntänimen. Se on julkinen luovutuspiste yhteydelle, joka kulkee jo välityspalvelimen kautta.
Ensin liitin muodostaa HTTP CONNECT- tai SOCKS-tunnelin varsinaiseen SFTP-palvelimeen ja sen porttiin. Sen jälkeen muodostettu virta välitetään SFTP:lle:
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 on jo yhdistetty virta, ei välityspalvelimen URL. $expectedHostKey on palvelimen luotettu julkinen avainmerkkijono, joka saadaan sovelluksen valmistelumenettelyn kautta, siinä muodossa jonka phpseclib palauttaa. Kirjautumistieto voi olla tuettu salasana tai sovelluksen valitsema ladattu avainobjekti.
Määrittele, mitä liitin palauttaa
Virran on johdettava jo SFTP-palvelimeen. HTTP CONNECTin osalta tämä tarkoittaa, että välityspalvelin on hyväksynyt kohteen ja että välityspalvelimen täydet vastausotsakkeet on kulutettu. SOCKSin osalta asiaankuuluva neuvottelu on täytynyt suorittaa onnistuneesti. Kaikki SSH-tavut, jotka on jo luettu tämän rajan yli, on pidettävä SSH-toteutuksen saatavilla.
Tässä vaiheessa phpseclib suorittaa SSH-vaihdon ja käynnistää SFTP:n samalla virralla. Sovellus voi käyttää tavallisia SFTP-toimintojaan. Konstruktorin rajapinta välttää sovelluksen aliluokan, jonka tehtävänä olisi korvata sisäisiä pistokekenttiä.