Isang lokal na SOCKS listener mula sa koneksyon ng AsyncSSH
Gumawa ng dinamikong TCP forwarding gamit ang forward_socks API ng AsyncSSH at panatilihing buhay ang listener sa asyncio event loop.
Naglalaan ang AsyncSSH ng dinamikong TCP forwarding sa pamamagitan ng forward_socks(). Ang isang aplikasyong may AsyncSSH na ay makakagawa ng lokal na SOCKS listener sa ibabaw ng koneksyon ng SSH:
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
'jump.example.net', username='operator'
) as connection:
listener = await connection.forward_socks('127.0.0.1', 1080)
await listener.wait_closed()
asyncio.run(main())
Ang SSH server at account ay mga halimbawa lamang. Nalalapat ang karaniwang pagsusuri ng host key ng AsyncSSH. Dapat pahintulutan ng server ang hinihiling na TCP forwarding. Bilang katumbas sa command line, ang lokal na dinamikong forward ng OpenSSH ay gumagamit ng parehong direksyon mula SSH patungo sa destinasyon.
Maaari nang gamitin ng mga lokal na kliyente ang 127.0.0.1:1080 bilang kanilang SOCKS endpoint. Nagbibigay ng destinasyon ang bawat kahilingang SOCKS; binubuksan ng SSH server ang katumbas na papalabas na koneksyong TCP. Hindi kailangang magpatakbo ng remote downloader ang aplikasyon para sa bawat URL.
Pinapanatili ng paghihintay ang asynchronous na function sa loob ng saklaw ng koneksyon. Ang agad na pagbabalik pagkatapos gawin ang listener ay aalis sa saklaw na iyon at isasara ang koneksyong sumusuporta rito. Ang mas malaking aplikasyong asyncio ay maaaring panatilihing bukas ang koneksyong ito habang pinapatakbo ang iba pang gawain sa parehong event loop.