Kurulmuş proxy akışı üzerinden phpseclib 3 SFTP
Kurulmuş bir HTTP veya SOCKS tüneli üzerinden SFTP başlatmak için phpseclib 3'ün genel akış oluşturucusunu kullanın.
phpseclib 3, SSH/SFTP oluşturucusunun normalde bir ana bilgisayar adı alacağı yerde açık bir akış kaynağı kabul eder. Bu, hâlihazırda bir proxy üzerinden taşınan bağlantı için genel devir teslim noktasıdır.
Önce bağlayıcı, gerçek SFTP sunucusuna ve bağlantı noktasına bir HTTP CONNECT veya SOCKS tüneli kurar. Ardından kurulmuş akışı SFTP'ye geçirin:
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 zaten bağlı bir akıştır, proxy URL'si değildir. $expectedHostKey sunucunun güvenilen genel anahtar dizesidir; uygulamanın hazırlama süreciyle elde edilir ve phpseclib'in döndürdüğü biçimdedir. Oturum açma bilgisi, desteklenen parola veya uygulamanın seçtiği yüklenmiş anahtar nesnesi olabilir.
Bağlayıcının ne döndürdüğünü tanımlayın
Akış zaten SFTP sunucusuna yönlendirmelidir. HTTP CONNECT için bu, proxy'nin hedefi kabul ettiği ve tam proxy yanıt başlıklarının tüketildiği anlamına gelir. SOCKS için ilgili anlaşma başarıyla tamamlanmış olmalıdır. Bu sınırın ötesinde zaten okunmuş olan herhangi bir SSH baytı, SSH uygulaması için kullanılabilir kalmalıdır.
Bu noktada phpseclib SSH değişimini gerçekleştirir ve aynı akış üzerinde SFTP başlatır. Uygulama olağan SFTP işlemlerini kullanabilir. Oluşturucu arabirimi, işi dahili soket alanlarını değiştirmek olan bir uygulama alt sınıfından kaçınır.