Kurulmuş bir HTTP CONNECT Tünelini Paramiko'ya Aktarma
Paramiko'yu yetkili bir HTTP CONNECT yolu üzerinden bağlayın ve SSH ana makine anahtarı doğrulamasını koruyun.
Bir HTTP CONNECT yardımcısı amaçlanan SSH sunucusuna bir tünel döndürdükten sonra bu akışı Paramiko'ya verin:
with paramiko.SSHClient() as client:
client.load_system_host_keys()
client.connect('ssh.example.com',
username='operator',
sock=tunnel,
banner_timeout=10,
auth_timeout=10)
# Use the verified SSH connection.Örnek ana makineyi değiştirin ve dağıtımın doğru known-hosts verilerini yükleyin. tunnel zaten aynı sunucuya gitmelidir. connect'ye aktarılan ana makine adı SSH ana makine anahtarını tanımlar, proxy'yi değil.
sock arayüzü açık bir soket veya sokete benzer bir nesne kabul eder. Sizin için HTTP pazarlığı yapmaz. Döndürmeden önce bağlayıcı şunları yapmalıdır:
- Proxy'ye bağlanmalı ve hedef için geçerli bir CONNECT isteği göndermelidir.
- Desteklenen her türlü proxy kimlik doğrulamasını tamamlamalı ve başarılı bir tünel durumunu doğrulamalıdır.
- Tüm proxy başlık bölümünü okumalı, kısmi okumaları yönetmeli ve sınırın ötesindeki baytları korumalıdır.
- Kurulumu sınırlamalı ve reddedilen/hatalı soketleri kendi temizleme yolu üzerinden kapatmalıdır.
Bu iş için bakımı yapılan bir bağlayıcı kullanın. Tek bir alma tamponunda İngilizce başarı ifadesi aramak, bölünmüş durum satırlarını, değişken neden metnini ve eksik başlıkları kaçırır. Başarılı bir proxy TCP bağlantısı, kabul edilen SSH tüneli değildir.
Proxy istenen SSH bağlantı noktasına izin vermelidir; web tarama izni 22 numaralı bağlantı noktasına CONNECT erişimi kurmaz. 407, SSH oturum açmadan önce oluşur, SSH hesabı hatası ise tünelden sonra oluşur. Bu hesapları ayrı tutun.
Bittiğinde SSH istemcisini ve bağlayıcının sahip olduğu kaynakları kapatın. Bir görevin okumalarını durdurması, canlı bir bağlantıyı kendi başına kapatmaz.