无法使用python通过TCP连接到我的Google Cloud VM实例

时间:2018-11-24 02:40:36

标签: python server google-cloud-platform google-compute-engine firewall

情况

我用python写了一个简单的程序。这是一个简单的套接字聊天程序。在我的程序中,客户端仅连接到地址(ip,端口)并发送消息,而此时服务器已准备就绪,可以接收并打印消息。由于可以在计算机上尝试,因此我可以确保程序是正确的。

我在Google Cloud Platform上有一个VM实例,我可以通过ssh(由Google Cloud提供的一种简单方法)进行操作。我可以确保服务器正常运行。

问题

我在Google云服务器上启动了一个简单的tcp服务器python程序。然后,我在计算机上启动客户端程序。但是我得到这个错误:

  

ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了连接

或等效的中文:

  

ConnectionRefusedError:[WinError 10061]由于目标计算机积极拒绝,无法连接。

我该如何解决此问题并连接到我的Google云服务器?

我想也许防火墙拒绝了我的计算机的连接,但不知道如何解决。

2 个答案:

答案 0 :(得分:1)

此错误表示您的程序未在0.0.0.0端口XYZ上监听。

检查以查看您的程序是否正在监听localhost。如果更改为0.0.0.0,则表示所有可用网络。 localhost表示不监听任何网络接口,仅接受来自计算机内部的连接。

然后再次检查端口号。

要查看是否有监听的内容,请运行以下命令(Linux):netstat -at

在端口XYZ上寻找一行。

启动程序时,请确保在创建侦听器时它不会出错。如果尝试使用低于1024的端口号,则需要使用root特权对程序进行卸载。

答案 1 :(得分:1)

TCP连接被拒绝,因为GCP防火墙确实阻止了它。因此,您必须创建一个防火墙规则,以打开用于Ingress连接的TCP端口。

通过在GCP控制台的VPC网络部分中导航至Firewall rules,您可以创建防火墙规则或更新现有规则。

一种方法是tag您的GCE实例,并在创建防火墙规则时,将目标设置为此标签,对于“源过滤器”,将您尝试建立的机器的IP连接,或仅允许所有IP以0.0.0.0/0作为源进行连接。记住要指定需要打开的TCP端口。