Я пытаюсь настроить простую цепочку туннелей SSH.
У меня есть следующие машины:
- локальная машина по адресу 10.0.0.1.
- удаленная машина по адресу 10.0.0.2.
У меня есть следующие программы:
клиент.py:
import socket CLIENT_HOST = [...] CLIENT_PORT = [...] sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.connect((CLIENT_HOST, CLIENT_PORT)) sock.send('test') sock.close()
сервер.py:
import socket SERVER_HOST = [...] SERVER_PORT = [...] server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((SERVER_HOST, SERVER_PORT)) server.listen(1) client = server.accept()[0] print client.recv(1024) client.close() server.close()
Теперь:
Я запускаю client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8000) и server.py (SERVER_HOST='', SERVER_PORT=8000) на одном компьютере, и все работает, как и ожидалось.
Я запускаю client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8000) на локальном компьютере и server.py (SERVER_HOST='', SERVER_PORT=8001) на удаленном компьютере. Затем я запускаю PuTTY и добавляю локальный туннель SSH с исходным портом 8000 и целевым 10.0.0.2:8001, и он работает, как и ожидалось.
Я запускаю client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8001) на удаленной машине и server.py (SERVER_HOST='', SERVER_PORT=8002) на локальной машине. Затем я запускаю PuTTY и добавляю удаленный SSH-туннель с исходным портом 8001 и целевым 127.0.0.1:8002, и он работает, как и ожидалось.
Однако, когда я запускаю client.py (CLIENT_HOST='127.0.0.1', CLIENT_PORT=8000) и server.py (SERVER_HOST='', SERVER_PORT=8002) на локальном компьютере и запускаю два PuTTY, один с локальным SSH туннель от исходного порта 8000 к целевому 10.0.0.2:8001 и один с удаленным туннелем SSH от исходного порта 8001 к целевому 127.0.0.1:8002, ничего не происходит.
Как я понимаю, сообщение от client.py должно быть отправлено на порт 8000 локальной машины, где PuTTY слушает и должно перенаправить его через SSH на порт 8001 удаленной машины, где PuTTY слушает и должен перенаправить его через SSH на локальный порт 8002 машины, откуда он должен добраться до server.py.
Что не так и как это исправить?
Спасибо.