phpseclib 3 SFTP gjennom ein etablert proxystraum
Bruk den offentlege straumkonstruktøren til phpseclib 3 for å starte SFTP gjennom ein etablert HTTP- eller SOCKS-tunnel.
phpseclib 3 godtek ein open straumressurs der SSH/SFTP-konstruktøren elles ville fått eit vertsnamn. Det er det offentlege overleveringspunktet for ei tilkopling som allereie blir ført gjennom ein proxy.
Først etablerer connectoren ein HTTP CONNECT- eller SOCKS-tunnel til den faktiske SFTP-tenaren og porten. Deretter blir den etablerte straumen send til 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 er ein allereie tilkopla straum, ikkje ein proxy-URL. $expectedHostKey er tenaren sin klarerte offentlege nøkkelstreng, henta gjennom klargjeringsprosessen til applikasjonen, i formatet phpseclib returnerer. Påloggingslegitimasjonen kan vere det støtta passordet eller eit innlasta nøkkelobjekt som applikasjonen vel.
Definer kva connectoren returnerer
Straumen må allereie leie til SFTP-tenaren. For HTTP CONNECT tyder det at proxyen har godteke målet og at dei komplette proxy-svarhovuda er forbrukte. For SOCKS må den relevante forhandlinga vere fullført. Eventuelle SSH-byte som allereie er lesne forbi denne grensa, må halde fram med å vere tilgjengelege for SSH-implementasjonen.
På det tidspunktet utfører phpseclib SSH-utvekslinga og startar SFTP over den same straumen. Applikasjonen kan bruke dei vanlege SFTP-operasjonane sine. Konstruktørgrensesnittet unngår ein applikasjonsunderklasse med oppgåve å erstatte interne socketfelt.