0

インターネット上のすべての人に接続が見られたくないので、sslを使用して接続しようとしています[最もよく使用するコンピューターをvpsや他のローカルコンピューターに接続します]が、sslを取得するのに多くの困難がありますrpycで作業します。私はそうするのに数日を費やしました...

client.py は ubuntu マシン上にあり、server.py は Windows 10 マシン上で実行されています。

ポート22を使用して、ubuntuマシンからWindowsマシンにsshを使用して接続できます。

また、Windowsマシンでポート1337をポート転送しました

さらに、Windows ファイアウォールでポート 1337 を有効にしました。

client.pyの例では、キーファイルも証明書ファイルも提供しませんでしたが、証明書とキーファイルを使用するclient.pyも作成したため、これは違いを生むようには見えませんが、それでも同じ結果です。

10.0.0.144 をポート 1337 に tcptraceroute して、期待どおりの結果を得ることもできます

client.py

import rpyc

conn = rpyc.ssl_connect("10.0.0.144", port=1337,
                    keyfile=None,
                    certfile=None)
conn.execute("print ('world')")

サーバー.py

import rpyc


class MyService(rpyc.Service):
    def on_connect(self):
        # code that runs when a connection is created
        # (to init the serivce, if needed)
        pass

    def on_disconnect(self):
        # code that runs when the connection has already closed
        # (to finalize the service, if needed)
        pass

    def exposed_get_answer(self):  # this is an exposed method
        return 42

    def get_question(self):  # while this method is not exposed
        return "what is the airspeed velocity of an unladen swallow?"


if __name__ == "__main__":
    from rpyc.utils.server import ThreadedServer
    from rpyc.utils.authenticators import SSLAuthenticator

    authenticator = SSLAuthenticator("../certs/server.key", "../certs/server.crt")
    server = ThreadedServer(MyService, port=1337, authenticator=authenticator)
    server.start()

クライアントのトレースバック

Traceback (most recent call last):
  File "/home/nubonix/PycharmProjects/NBM2/utils/remoting/TESTING/remoting8_4.py", line 3, in <module>
    conn = rpyc.ssl_connect("10.0.0.144", port=1337,
  File "/home/nubonix/PycharmProjects/NBM2/venv/lib/python3.8/site-packages/rpyc/utils/factory.py", line 160, in ssl_connect
    s = SocketStream.ssl_connect(host, port, ssl_kwargs, ipv6=ipv6, keepalive=keepalive)
  File "/home/nubonix/PycharmProjects/NBM2/venv/lib/python3.8/site-packages/rpyc/core/stream.py", line 214, in ssl_connect
    s2 = ssl.wrap_socket(s, **ssl_kwargs)
  File "/usr/lib/python3.8/ssl.py", line 1405, in wrap_socket
    return context.wrap_socket(
  File "/usr/lib/python3.8/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/usr/lib/python3.8/ssl.py", line 1040, in _create
    self.do_handshake()
  File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL] internal error (_ssl.c:1131)

Process finished with exit code 1
4

0 に答える 0