我无法获取由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].
我做了什么:
1:验证防火墙是否在端口22上打开
gcloud compute firewall-rules list
返回
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
2:续订公钥
ssh-keygen -t rsa -f ~/.ssh/google_compute_engine -C myuser
3:使用新公钥更新元数据
sudo gcloud compute ssh myuser@ubuntu
Updating project ssh metadata...
Updating project ssh metadata...done.
Waiting for SSH key to propagate.
然后,仍然是相同的错误消息:
ssh: connect to host 35.187.38.82 port 22: Connection refused
ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
我应该补充一点,我可以访问ssh直到今天,当然,我之前做过身份验证 gcloud auth login
来自Google Cloud网络界面的SSH工作正常!有什么不同? 非常感谢任何帮助!!答案 0 :(得分:8)
经过长时间的搜索,我终于找到了这个棘手问题的根本原因。我希望这能帮助一些绝望的人......
您可能会拒绝ssh连接的原因是,意外地删除了外部ip请求的内部路由。您可以通过以下方式查看:
gcloud compute routes list
如果这不返回包含以下条目的列表:
default-internet default 0.0.0.0/0 default-internet-gateway 1000
然后您必须通过以下方式重新创建此条目:
gcloud compute routes create default-internet \
--destination-range 0.0.0.0/0 \
--next-hop-gateway default-internet-gateway
答案 1 :(得分:0)
就我而言,我升级了GCP实例(只是增加了更多的处理器和内存)。
我的Circle CI部署开始抛出:
Authentication failed.
Exited with code 255
几个小时试图弄清楚到底是什么引起了麻烦,我发现 / etc / ssh / sshd_config 的内容被完全清空了。 解决我的问题的是重新创建此文件并重新启动ssh服务。
注意:密码验证应设置为否
答案 2 :(得分:0)
对于那些不幸遇难的可怜人。
以下内容始终如一地为我工作:
在您的gcloud CLI机器上,运行
gcloud init
并执行 提示。
结束。我希望这对您有帮助,我亲爱的互联网同伴。
答案 3 :(得分:0)
我的情况是我正在实例上运行一个 nohup
进程,突然该进程停止工作。
经过大量时间调查,我发现实例本身挂了。我们错过了这样的小事情,被发现调试更大的问题
检查您是否能够ping
您的实例。如果没有,重新启动它并ssh
,它会正常工作。这是解决方案之一。