我有一个Python客户端需要与我管理的远程服务器通信。他们使用zeromq进行通信。当我在本地测试客户端/服务器时,一切正常。但现在我已经将客户端和服务器部署在云上,每个都使用不同的提供商。我的问题是,最简单的(安全)连接方式是什么?我假设我不能传递密码,即使我可以,我猜测还有更安全的替代方案。
我知道如何使用ssh-keygen设置无密码的ssh连接。那会起作用吗?客户端是否需要在发送tcp请求之前与服务器建立ssh连接?如果有一个Python库可以帮助解决这个问题,那将是很大的帮助。
谢谢!
更新: 超过24小时过去了,没有人回复/回答。我认为我正在接近解决这个问题,但还没有完全解决。我将客户端的密钥添加到服务器的.ssh / authorized_key中,现在我可以从客户端ssh到服务器而无需密码。接下来,我按照此帖子关于“使用SSH隧道化PyZMQ连接”的说明操作。以下是我的客户端代码:
我知道如何使用ssh-keygen设置无密码的ssh连接。那会起作用吗?客户端是否需要在发送tcp请求之前与服务器建立ssh连接?如果有一个Python库可以帮助解决这个问题,那将是很大的帮助。
谢谢!
更新: 超过24小时过去了,没有人回复/回答。我认为我正在接近解决这个问题,但还没有完全解决。我将客户端的密钥添加到服务器的.ssh / authorized_key中,现在我可以从客户端ssh到服务器而无需密码。接下来,我按照此帖子关于“使用SSH隧道化PyZMQ连接”的说明操作。以下是我的客户端代码:
1 context = zmq.Context()
2 socket = context.socket(zmq.REQ)
3 socket.connect("tcp://localhost:5555")
4 ssh.tunnel_connection(socket, "tcp://locahost:5555", "myuser@remote-server-ip:5555")
5 socket.send_string(some_string)
6 reply = socket.recv()
这个不起作用。我不太理解第三行和第四行,我认为我在那里做错了什么。此外,我的服务器(托管在Linode上)有一个“默认网关”IP和一个“公共IP” - 在隧道连接中,我只指定了公共IP,这也是我用于ssh到机器的IP。