64

我通过 Google Cloud Web 控制台从 CentOS 6.x 映像创建了一个新实例。我在创建表单上看到一个空白,我可以在其中粘贴现有的 SSH 密钥;因为这是我的第一个实例,所以我还没有。我认为它会像 Amazon EC2 那样带我完成密钥创建过程。它没有。

该实例似乎已创建,但我不知道如何获取它的 SSH 密钥。实例网页有一个按钮,上面写着“SSH”,它让我可以通过一个模拟 SSH 会话的弹出式 Web 浏览器窗口短暂登录。但是,它只让我进入用户级帐户,而不是root. 弹出窗口有一个菜单项来更改用户并将其更改为root只会产生连接错误。现在我根本无法登录我的实例!

我已经搜索过,但找不到任何直接解释 Google Compute 实例这一方面的文档。

我是否必须手动创建自己的 SSH 密钥并在创建实例期间将它们粘贴到表单中?我错过了一个明显的步骤吗?

4

8 回答 8

84

默认情况下,新的 Google Compute Engine (GCE) VM 实例没有预分配 SSH 密钥,因此您无法“检索”它们,因为它们不存在 — 由您来创建它们或使用工具像gcloud(见下文),如果您还没有 SSH 密钥,它将提示您创建它们。

您有多种连接到新创建的 GCE VM 的选项。

一种选择是使用实例列表中实例旁边的开发人员控制台 GUI 中的“SSH”按钮进行连接,这将打开浏览器窗口和与实例的终端会话。

如果您想在命令行上通过 SSH 客户端进行连接,可以使用gcloud工具(Google Cloud SDK的一部分):

gcloud compute ssh example-instance

您可以在帮助页面上看到完整的标志和选项集gcloud compute ssh,以及几个示例。

如果您还没有 SSH 密钥,它将提示您创建它们,然后连接到实例。如果您已有密钥,则可以使用现有的 SSH 密钥,它将传输到实例。

默认情况下,gcloud期望键位于以下路径:

  • $HOME/.ssh/google_compute_engine– 私钥
  • $HOME/.ssh/google_compute_engine.pub– 公钥

如果您想使用 重用来自不同位置的密钥gcloud,请考虑创建符号链接或使用标志指向gcloud那里。--ssh-key-file

注意:如果您根本不使用gcloud,则必须手动将 SSH 密钥添加到实例的元数据中,如在实例级别设置 ssh 密钥中所述,您可以通过Google Cloud 控制台gcloud或手动操作。

您还可以使用它创建自己的密钥ssh-keygen,这gcloud也将在幕后使用。您可以使用ssh直接连接到实例而不是,gcloud但您需要指定额外的参数才能这样做:

ssh -i KEY_FILE -o UserKnownHostsFile=/dev/null \
    -o CheckHostIP=no -o StrictHostKeyChecking=no \
    USER@IP_ADDRESS

这将需要以下参数:

  • KEY_FILE– [必需] 计算机上存储密钥的文件,例如~/.ssh/google_compute_engine.

  • USER– [必需] 登录该实例的用户名。通常,这是正在运行的本地用户的用户名gcloud compute

  • IP_ADDRESS– 【必填】实例的外部IP地址。

有关更多详细信息,请参阅SSH 文档

于 2014-12-17T23:34:23.773 回答
34

使用 ssh 登录实例- [在 Linux Ubuntu 16.04 上执行的所有步骤]

  1. Create a SSH Key ssh-keygen -t rsa -f ~/.ssh/gcloud_instance1 -C varunon9here gcloud_instance1is name of key file and varunon9is username

  2. 打印公钥文件的内容cd ~/.ssh && cat gcloud_instance1.pub

  3. 单击编辑 VM 实例详细信息图标在此处输入图像描述

  4. 将公钥文件的内容(的输出cd ~/.ssh && cat gcloud_instance1.pub)粘贴到 ssh-keys 文本区域

    在此处输入图像描述 在此处输入图像描述

  5. 点击保存

  6. 现在,您可以从终端通过 ssh 登录到您的实例,ssh -i gcloud_instance1 varunon9@35.200.201.56其中gcloud_instance1私钥文件(在 .ssh 目录中)varunon9是用户名,35.200.201.56是您的实例的外部 IP。

于 2018-11-28T16:40:38.767 回答
8

为多个实例创建和使用一对 ssh 密钥的最简单方法:

第 1 步:从https://putty.org/安装 putty 和 puttyGen

第 2 步:在本地台式机/笔记本电脑中打开终端(在 Windows 10 及更高版本中,您使用 Windows Linux 子系统)

类型:ssh-keygen

在提示符处输入文件名的名称:例如 google_key

将创建 2 个文件 google_key 和 google_key.pub

第 3 步:复制 google_key.pub 的全部内容

注意没有换行符。它应该都在一行中。

第 4 步:在创建任何 VM 实例之前,转到Compute Engine -> 元数据

选择“SSH 密钥”选项卡并单击“添加 SSH”密钥

粘贴 google_key.pub 的内容。如果您正确粘贴了内容,您应该会看到用户名出现在左侧标签上。然后点击保存。

第 5 步:现在在 google 计算下创建您最喜欢的 VM 实例。

复制外部 IP vm_instance_external_ip

回到你的 linux 终端并输入

ssh -i google_key.pub用户@vm_instance_external_ip

输入“是”

现在你应该很高兴了。

如果您需要视频说明,请参阅此处

于 2019-07-18T05:17:38.993 回答
2

我发现了一个有用的按钮,它有助于避免对不同 gcloud 参数(例如 versionId、serviceId 等)的猜谜游戏。

查看 gcloud 命令--> ssh 截图

于 2019-08-28T11:00:16.937 回答
1

打开控制台后,尝试在 ssh 选项卡中查看 gcloud 命令。gcloud 客户端将使用以下命令打开。

gcloud 计算 --project ssh --zone

如果是第一次,它将为您创建 ssh 密钥。您只需要使用右上角的 gcloud 客户端下载文件选项在此位置~/.ssh/google_compute_engine下载文件。获得密钥文件后,只需发出

ssh -i 用户名@external_IP

于 2018-07-09T08:06:33.243 回答
0

概念很简单,如果你有 SSH 私钥,你可以连接到上面给出的服务器答案是 @isma 很简单

所以

  • 创建 SSH 密钥:desktop-shell/GCP-sdk 中的 ssh-keygen 生成公钥/私钥
  • 将公钥放入 Gcloud Compute-SSH
  • 现在使用 ssh -i google_key username@vm_instance_external_ip 从 desktop-shell/GCP-sdk 连接

或者

使用putty下载@Abubacker提到的私钥并打开Putty

  • 给出IP地址
  • 在 SSH-Auth 中打开私钥
于 2020-10-02T10:41:25.183 回答
0

对于想要将项目范围的 SSH 密钥添加到他们的 Google Cloud Platform (GCP) 项目的任何人,$GCP_PROJECT_NAME

  1. 生成基于 Ed25519 的 SSH 密钥:

    ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"
    
    #=>
    
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/. . ./.ssh/id_ed25519):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in id_ed25519.
    Your public key has been saved in id_ed25519.pub.
    The key fingerprint is:
    SHA256:. . . "$(whoami)@$(hostname)"
    The key's randomart image is:
    +--[ED25519 256]--+
    |      . . .      |
    +----[SHA256]-----+
    
  2. 从此处安装 Google Cloud SDK ( gcloud)

  3. 确保您以正确的用户身份登录:

    gcloud config list --format="value(core.account)"
    

    如果没有,请使用以下方式登录:

    gcloud auth login
    
  4. 确保您已连接到$GCP_PROJECT_NAME

    gcloud config list --format="value(core.project)"
    

    如果没有,请切换到$GCP_PROJECT_NAME

    gcloud config set project $GCP_PROJECT_NAME
    
  5. 使用filter()和可用的firstof() 转换gcloud允许您避免生成临时文件,并且仅使用单个命令将该 SSH 密钥添加到$GCP_PROJECT_NAME

    gcloud compute project-info add-metadata \
    --metadata ssh-keys="$(gcloud compute project-info describe \
    --format="value(commonInstanceMetadata.items.filter(key:ssh-keys).firstof(value))")
    $(whoami):$(cat ~/.ssh/id_ed25519.pub)"
    
    #=>
    
    Updated [https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME].
    
  6. 您现在应该在 ; 中看到基于 Ed25519 的 SSH 密钥$GCP_PROJECT_NAME;检查:

    gcloud compute project-info describe \
    --format="value(commonInstanceMetadata.items.filter(key:ssh-keys).firstof(value))"
    

使用OpenSSH将 shell 保护到计算虚拟机 (VM) 中非常简单:

  1. $GCP_VM_ADDRESS找到您希望通过以下方式保护 shell 的 VM的外部 IP ( ):

    gcloud compute instances list \
    --format=table"[box=true](name:label=NAME, networkInterfaces[].accessConfigs[].natIP.flatten():label=EXTERNAL_IP)"
    
    #=>
    
    ┌──────────────┬─────────────────┐
    │     NAME     │  EXTERNAL_IP    │
    ├──────────────┼─────────────────┤
    │     . . .    │      . . .      │
    │ $GCP_VM_NAME │ $GCP_VM_ADDRESS │
    │     . . .    │      . . .      │
    └──────────────┴─────────────────┘
    

    注意:如果您尚未创建 VM,请务必按照此处的说明进行操作。

  2. 您现在应该能够:

    ssh $(whoami)@$GCP_VM_ADDRESS
    
于 2021-08-11T11:25:14.290 回答
0

要在您的机器中填充 SSH 配置文件,请使用:

gcloud compute config-ssh
于 2020-12-23T00:13:25.460 回答