Я пытаюсь настроить сервер имен Pyro4 на удаленной машине для локального доступа. Я решаю эту проблему, используя переадресацию порта ssh. Если я пытаюсь настроить сервер имен Pyro4 на тот же порт, на котором слушает пульт, я получаю сообщение об ошибке socket сообщающее мне socket.error: [Errno 98] Address already in use . Я думал, что я мог бы перенаправить соединения на удаленном порт сервера имен.

Чтобы дать вам представление о том, что я пытаюсь, посмотрите следующие команды. Сначала я настроил переадресацию портов с локального на удаленный.

dean@local$> ssh -l dean -L 2223:localhost:2224 remote

Remote прослушивает порт 2224 . На удаленном компьютере у меня работает сервер имен Pyro4 с портом 2225 . Затем, если я пытаюсь настроить переадресацию локального порта на удаленный, следующим образом

dean@remote$> ssh -N -l dean -L 2224:localhost:2225 remote &

Я получаю следующую ошибку:

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 2224
Could not request local forwarding.

Я немного читал об использовании сокетов для перенаправления трафика, но это кажется гораздо более сложным решением.

1 ответ1

0

Это работает без проблем в моей системе. Что-то блокирует порт в вашей системе. Вот что я сделал:

Мои системы: A = Windows 7, имя хоста 'neptune' B = OSX El Capitan, имя хоста 'phobos' Оба используют последнюю версию Pyro (но это не должно иметь большого значения)

На A: (здесь я использую git bash shell для Windows, но это не имеет значения)- создайте туннель ssh для фобоса, туннелирующий сокет phobos: 2224 - в этой удаленной оболочке запустите сервер имен, привязанный к фобосу: 2224 так:

$ ssh -l irmen -L 2223:phobos:2224 phobos
Last login: Tue Feb 21 22:09:15 2017
phobos:~ irmen$ cd Projects/Pyro4/src
phobos:src irmen$ python3 -m Pyro4.naming -n phobos -p 2224
Broadcast server running on 0.0.0.0:9091
NS running on phobos:2224 (192.168.178.20)
Warning: HMAC key not set. Anyone can connect to this server!
URI = PYRO:Pyro.NameServer@phobos:2224

Вы также можете запустить сервер имен на удаленном хосте напрямую после открытия туннеля порта ssh, но я делаю это здесь с моей машины Windows удаленно.

Во всяком случае, после этого все работает как ожидалось от A:

$ hostname
Neptune
$ python -m Pyro4.nsc -n localhost -p 2223 list
--------START LIST
Pyro.NameServer --> PYRO:Pyro.NameServer@phobos:2224
    metadata: ['class:Pyro4.naming.NameServer']
--------END LIST

Как видите, это содержимое сервера имен NS, работающего на Фобосе через туннель ssh.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .