gcloud compute ssh拒绝连接(返回码255)

Agi*_*ean 2 ssh ssh-keys google-cloud-platform gcloud

我无法获得由Google Cloud命令行工具(gcloud)创建的vm实例的ssh访问权限.

症状:

sudo gcloud compute ssh myuser@ubuntu
ssh: connect to host 104.155.16.104 port 22: Connection refused
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
Run Code Online (Sandbox Code Playgroud)

我做了什么:

1:验证端口22上的防火墙是否已打开

gcloud compute firewall-rules list
Run Code Online (Sandbox Code Playgroud)

回

NAME                    NETWORK  SRC_RANGES    RULES                         SRC_TAGS  TARGET_TAGS
allow-rstudio           default  0.0.0.0/0     tcp:8787                                allow-rstudio
default-allow-http      default  0.0.0.0/0     tcp:80                                  http-server
default-allow-https     default  0.0.0.0/0     tcp:443                                 
https-server
default-allow-icmp      default  0.0.0.0/0     icmp
default-allow-internal  default  10.128.0.0/9  tcp:0-65535,udp:0-65535,icmp
default-allow-rdp       default  0.0.0.0/0     tcp:3389
default-allow-ssh       default  0.0.0.0/0     tcp:22
Run Code Online (Sandbox Code Playgroud)

2:续订公钥

ssh-keygen -t rsa -f ~/.ssh/google_compute_engine -C myuser
Run Code Online (Sandbox Code Playgroud)

3:使用新公钥更新元数据

sudo gcloud compute ssh myuser@ubuntu
Updating project ssh metadata...
Updating project ssh metadata...done.                                                                                                                                     
Waiting for SSH key to propagate.
Run Code Online (Sandbox Code Playgroud)

然后,仍然是相同的错误消息:

ssh: connect to host 35.187.38.82 port 22: Connection refused
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
Run Code Online (Sandbox Code Playgroud)

我应该补充一点,我可以访问ssh直到今天,当然,我之前使用gcloud auth登录进行了身份验证

来自Google Cloud Web界面的SSH工作正常!有什么不同?将不胜感激任何帮助!!

Agi*_*ean 9

经过长时间的搜索,我终于找到了这个棘手问题的根本原因.我希望这能帮助一些绝望的人......

您可能会拒绝ssh连接的原因是,意外地删除了外部ip请求的内部路由.你可以通过以下方式检查:

gcloud compute routes list
Run Code Online (Sandbox Code Playgroud)

如果这不返回包含以下条目的列表:

default-internet       default     0.0.0.0/0       default-internet-gateway 1000
Run Code Online (Sandbox Code Playgroud)

然后,您必须通过以下方式重新创建此条目:

gcloud compute routes create default-internet \
--destination-range 0.0.0.0/0 \
--next-hop-gateway default-internet-gateway
Run Code Online (Sandbox Code Playgroud)