phpseclib 3 נעמט אן אן אפענעם שטראם־רעסורס וואו זיין SSH/SFTP קאנסטרוקטאר וואלט אנדערש באקומען א האסט־נאמען. דאס איז דער עפנטלעכער איבערגעב־פונקט פאר א פארבינדונג וואס ווערט שוין געפירט דורך א פראקסי.

ערשט שטעלט דער קאנעקטאר אויף אן HTTP CONNECT אדער SOCKS טונעל צום עכטן SFTP סערווער און זיין פארט. דערנאך גיט איבער דעם אויפגעשטעלטן שטראם צו 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 אפעראציעס. דער קאנסטרוקטאר־אינטערפייִס פארמיידט אן אפליקאציע־אונטערקלאס וועמענס ארבעט וואלט געווען איבערצוטוישן אינעווייניקסטע סאקעט־פעלדער.

פֿאַרבונדענע אַרטיקלען