phpseclib 3 SFTP gjennom en etablert proxystrøm
Bruk phpseclib 3s offentlige strømkonstruktør for å starte SFTP gjennom en etablert HTTP- eller SOCKS-tunnel.
phpseclib 3 godtar en åpen strømressurs der SSH/SFTP-konstruktøren ellers ville fått et vertsnavn. Det er det offentlige overleveringspunktet for en tilkobling som allerede føres gjennom en proxy.
Først etablerer connectoren en HTTP CONNECT- eller SOCKS-tunnel til den faktiske SFTP-serveren og porten. Deretter sendes den etablerte strømmen 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 en allerede tilkoblet strøm, ikke en proxy-URL. $expectedHostKey er serverens klarerte offentlige nøkkelstreng, hentet gjennom applikasjonens klargjøringsprosess, i formatet phpseclib returnerer. Påloggingslegitimasjonen kan være det støttede passordet eller et innlastet nøkkelobjekt som applikasjonen velger.
Definer hva connectoren returnerer
Strømmen må allerede lede til SFTP-serveren. For HTTP CONNECT betyr det at proxyen har godtatt målet og at de komplette proxy-svarhodene er forbrukt. For SOCKS må den relevante forhandlingen være fullført. Eventuelle SSH-byte som allerede er lest forbi denne grensen, må forbli tilgjengelige for SSH-implementasjonen.
På det tidspunktet utfører phpseclib SSH-utvekslingen og starter SFTP over den samme strømmen. Applikasjonen kan bruke sine vanlige SFTP-operasjoner. Konstruktørgrensesnittet unngår en applikasjonsunderklasse hvis oppgave ville være å erstatte interne socket-felt.