Түзүлгөн 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 портуна уруксат бериши керек; веб-серептөө уруксаты 22-портко CONNECT жетүүсүн орнотпойт. 407 SSH кирүүсүнөн мурун пайда болот, ал эми SSH эсебинин ийгиликсиздиги туннелден кийин пайда болот. Бул эсептерди өзүнчө кармаңыз.
Бүткөндө SSH кардарын жана туташтыргычка таандык ресурстарды жабыңыз. Тапшырманын окууларды токтотушу өзү эле активдүү байланышты жабпайт.