Ssh client.py не работает, показывает ошибку подключения

Мой файл конфигурации:

Host server
User new_user
HostName 10.0.1.193
Port 55555
LocalForward 3000 10.0.1.193:6000
IdentityFile ~/.ssh/server

Клиент.py

import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:3000')
print s.pow(2,3)  # Returns 2**3 = 8
print s.add(2,3)  # Returns 5
print s.div(5,2)  # Returns 5//2 = 2

# Print list of available methods
print s.system.listMethods()

Сервер.py

from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler

# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ('/RPC2',)

# Create server
server = SimpleXMLRPCServer(("localhost", 6000),
                            requestHandler=RequestHandler)
server.register_introspection_functions()

# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)

# Register a function under a different name
def adder_function(x,y):
    return x + y
server.register_function(adder_function, 'add')

# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:
    def div(self, x, y):
        return x // y

server.register_instance(MyFuncs())

# Run the server's main loop
server.serve_forever()

Мой server.py работает нормально, но когда я запускаю свой client.py, он выдает следующую ошибку:

Traceback (most recent call last):
  File "client.py", line 4, in <module>
    print s.pow(2,3)  # Returns 2**3 = 8
  File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1292, in single_request
    self.send_content(h, request_body)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1439, in send_content
    connection.endheaders(request_body)
  File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 776, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 757, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
socket.error: [Errno 111] Connection refused

Я проверил, что мой ssh ​​работает, и я могу подключиться по ssh к удаленному серверу с заданной конфигурацией, т.е.

ssh server

работает найти. Кто-нибудь может объяснить, что может быть не так?


person shailesh    schedule 17.03.2013    source источник
comment
Открыто ли соединение ssh перед запуском client.py?   -  person dave4420    schedule 18.03.2013


Ответы (1)


Ваш сервер работает и, возможно, не жалуется, но это не означает, что он «работает правильно» или, точнее, это не означает, что сервер находится в рабочем состоянии, которое ожидает клиент.

Вышеизложенное несколько загадочно по одной причине: что-то неизвестное пошло не так, и даже если вы еще не знаете, что сломалось, вы хотите начать тестирование вещей, которые, как вы знаете, должны работать, и убедиться, что они действительно работают. Это полезный навык отладки, даже если ошибка не имеет для вас смысла.

В этом случае сообщение об ошибке клиента «отказано в соединении», что означает «отказано [на сервере]».

Попробуйте следующее: на вашем «клиентском» ПК в окне терминала/DOS запустите: telnet [ip вашего сервера] [порт вашего сервера]

Следует ожидать ту же ошибку - отказ в соединении. Возможно, сервер на самом деле не открывает порт. Или, возможно, сервер открыл порт, но вы не можете видеть его удаленно на другом хосте из-за брандмауэра на сервере.

Кроме того, запуск клиентского и серверного кода на одном и том же хосте иногда может выявить больше подсказок (это должно работать, но если это не так, возможно, существует более одной проблемы).

person Scott Prive    schedule 16.10.2013