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.

Relaterte artiklar