Một trình lắng nghe SOCKS cục bộ từ kết nối AsyncSSH
Tạo chuyển tiếp TCP động bằng API forward_socks của AsyncSSH và giữ trình lắng nghe sống trên vòng lặp sự kiện asyncio.
AsyncSSH cung cấp chuyển tiếp TCP động qua forward_socks(). Một ứng dụng đã có AsyncSSH có thể tạo trình lắng nghe SOCKS cục bộ trên một kết nối 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())
Máy chủ SSH và tài khoản chỉ là ví dụ. Việc kiểm tra khóa máy chủ thông thường của AsyncSSH vẫn áp dụng. Máy chủ phải cho phép chuyển tiếp TCP được yêu cầu. Tương đương trên dòng lệnh là chuyển tiếp động cục bộ của OpenSSH, dùng cùng hướng từ SSH đến đích.
Máy khách cục bộ giờ có thể dùng 127.0.0.1:1080 làm điểm cuối SOCKS của mình. Mỗi yêu cầu SOCKS cung cấp đích của nó; máy chủ SSH mở kết nối TCP đi ra tương ứng. Ứng dụng không cần chạy trình tải xuống từ xa cho từng URL.
Việc chờ giữ hàm bất đồng bộ bên trong phạm vi kết nối. Trả về ngay sau khi tạo trình lắng nghe sẽ rời khỏi phạm vi đó và đóng kết nối đang nâng đỡ nó. Một ứng dụng asyncio lớn hơn có thể giữ kết nối này mở trong khi chạy các tác vụ khác trên cùng vòng lặp sự kiện.