Пренесување на воспоставен HTTP CONNECT тунел до Paramiko
Поврзете го Paramiko преку овластена HTTP CONNECT рута додека ја задржувате проверката на SSH клучот на домаќинот.
Откако HTTP CONNECT помагачот ќе врати тунел до саканиот SSH сервер, предајте го тој тек на 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.Заменете го примерниот домаќин и вчитајте ги точните known-hosts податоци на распоредувањето. tunnel веќе мора да води до истиот сервер. Името на домаќинот предадено на connect го идентификува SSH клучот на домаќинот, а не проксито.
sock интерфејсот прифаќа отворен сокет или објект сличен на сокет. Тој не преговара HTTP наместо вас. Пред да го врати, конекторот мора:
- Да се поврзе со проксито и да испрати валидно CONNECT барање за одредиштето.
- Да заврши секоја поддржана прокси автентикација и да потврди успешен статус на тунелот.
- Да го прочита целиот дел со заглавија на проксито, обработувајќи делумни читања и зачувувајќи бајти надвор од границата.
- Да го ограничи поставувањето и да ги затвори одбиените/погрешните сокети преку својата патека за чистење.
Користете одржуван конектор за таа работа. Барањето англиска фраза за успех во еден приемен бафер ги пропушта поделените статусни линии, променливиот текст на причината и нецелосните заглавија. Успешна прокси TCP врска не е прифатениот SSH тунел.
Проксито мора да го дозволи бараниот SSH порт; дозволата за веб-прелистување не воспоставува CONNECT пристап до портот 22. 407 се јавува пред најавата на SSH, додека неуспехот на SSH сметката се јавува по тунелот. Држете ги тие сметки одвоени.
Затворете го SSH клиентот и ресурсите што ги поседува конекторот кога ќе завршите. Застанувањето на читањата на задачата само по себе не затвора жива врска.