Setelah pembantu HTTP CONNECT mengembalikan terowong ke pelayan SSH yang dimaksudkan, serahkan strim itu kepada Paramiko:

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.

Gantikan hos contoh dan muatkan data known-hosts yang betul bagi penggunaan itu. tunnel sudah mesti menuju ke pelayan yang sama. Nama hos yang dihantar kepada connect mengenal pasti kunci hos SSH, bukan proksi.

Antara muka sock menerima soket terbuka atau objek seperti soket. Ia tidak merundingkan HTTP untuk anda. Sebelum mengembalikannya, penyambung mesti:

  1. Menyambung ke proksi dan menghantar permintaan CONNECT yang sah untuk destinasi.
  2. Melengkapkan sebarang pengesahan proksi yang disokong dan mengesahkan status terowong yang berjaya.
  3. Membaca keseluruhan bahagian pengepala proksi, mengendalikan bacaan separa dan memelihara bait melepasi sempadan.
  4. Mengehadkan persediaan dan menutup soket yang ditolak/bermasalah melalui laluan pembersihannya.

Gunakan penyambung yang diselenggara untuk kerja itu. Mencari frasa kejayaan bahasa Inggeris dalam satu penimbal penerimaan terlepas baris status yang terpisah, teks sebab yang berubah-ubah dan pengepala yang tidak lengkap. Sambungan TCP proksi yang berjaya bukan terowong SSH yang diterima.

Proksi mesti membenarkan port SSH yang diminta; kebenaran melayari web tidak mewujudkan akses CONNECT ke port 22. 407 berlaku sebelum log masuk SSH, manakala kegagalan akaun SSH berlaku selepas terowong. Asingkan akaun itu.

Tutup klien SSH dan sumber yang dimiliki penyambung apabila selesai. Tugas yang menghentikan bacaannya tidak dengan sendirinya menutup sambungan yang masih hidup.

Artikel berkaitan