我无法通过 SSH 进入 Google Cloud Services 上的实例。
我不太熟悉虚拟机管理和故障排除,但我已经尝试了我所知道的一切,并且谷歌可以为我提供包括:
- 尝试从外部程序进行 SSH
- 在新实例上复制并安装磁盘
- 使用串行控制台连接两者
- 在其他托管位置尝试上述所有操作
无论我怎么尝试,唯一的结果就是出现一个加载符号,后面跟着以下内容:
将密钥传输到项目元数据需要花费异常长的时间。传输到实例元数据可能会更快,但只会将密钥传输到此虚拟机。如果您希望从此虚拟机通过 SSH 连接到其他虚拟机,则需要相应地传输密钥。
我无法做到这一点,因为我没有 GCloud 用于通过 SSH 进入实例的私钥,并且使用 PuTTY 根本不起作用,因为我提供给服务器的任何公钥根本不起作用。
答案1
Google 已经开发了一个针对存在 SSH 连接问题的 VM 实例的故障排除脚本。以下是链接:https://github.com/GoogleCloudPlatform/compute-ssh-diagnostic-sh
答案2
收到此错误的原因之一是 VPC 的防火墙规则未配置为允许 SSH 进入实例。您可以在 Google Cloud Console 中验证此配置:
- 进入你的虚拟机所处的项目
- 使用左侧弹出菜单,选择“VPC 网络”
- 点击防火墙规则
- 检查允许通过端口 22 上的 TCP 进行 SSH 访问的规则,其目标包括您的实例或“适用于所有”
- 如果缺少规则,请创建防火墙规则,对于“源 IP 范围”,输入民众您的互联网连接的 IP 地址或输入 0.0.0.0/0 以允许来自互联网上任何地方的连接
答案3
如果实例上的启动磁盘已满,也会发生这种情况。 Google Cloud 解决连接错误
答案4
公钥需要先启用它们,然后第三方工具才能使用它们访问 VM 实例,这是为您尝试连接的 VM 完成的吗?
SSH 访问问题可以通过 /var/log/auth.log 进行调试(路径取决于操作系统,因此请查找适合您操作系统版本的正确路径),或者您可以查看串行控制台输出 查看一些额外的详细信息来帮助您解决问题。
如果您确定了问题的可能根本原因,则可以启用交互式访问串行控制台要解决这个问题。
如果你没有 root 密码,你可以:
1. Go to the VM instances page in Google Cloud Platform console.
2. Click on the instance for which you want to add a startup script.
3. Click the Edit button at the top of the page.
4. Click on ‘Enable connecting to serial ports’
5. Under Custom metadata, click Add item.
6. Set 'Key' to 'startup-script' and set 'Value' to this script:
#! /bin/bash
useradd -G sudo USERNAME
echo 'USERNAME:PASSWORD' | chpasswd
7. Click Save and then click RESET on the top of the page. You might need to wait for some time for the instance to reboot.
8. Click on 'Connect to serial port' in the page.
9. In the new window, you might need to wait a bit and press on Enter of your keyboard once; then, you should see the login prompt.
10.. Login using the USERNAME and PASSWORD you provided.
串行控制台访问并不安全,因此建议您在完成工作后禁用它。
您还可以通过运行来调试SSH 诊断来自的脚本Linux 客户机环境这些都包含在使用 Google 提供的公共映像创建的 Linux 实例中。