如何获取新的Google Compute Engine实例的ssh密钥?

ste*_*hak 41 ssh virtual-machine ssh-keys google-compute-engine

我是来自Amazon EC2世界的新Google Cloud试用用户,对于我如何通过ssh登录到新的Google Compute Engine VM实例,我感到非常困惑.

我通过Google Cloud Web控制台创建了一个新实例(如果重要的话,可以从CentOS 6.x映像中创建).我在创建表单上看到一个空白,我可以粘贴现有的ssh密钥,但由于这是我的第一个实例,我还没有.我认为它会带我完成像Amazon EC2那样的密钥创建过程.它没有.它似乎已经创建了实例,但我无法弄清楚如何获取它的ssh密钥.实例网页有一个显示"ssh"的按钮,它让我通过一个模拟ssh会话的弹出式Web浏览器窗口进行简短登录.但是,它只允许我进入用户级帐户,而不是root.弹出窗口有一个用于更改用户的菜单项,我将其更改为"root",之后它只会生成连接错误,现在我根本无法登录到我的实例.

我搜索过但找不到任何解释谷歌计算实例这方面的直接文档.我搜索了Web控制台,但找不到ssh密钥创建/选择机制,也没有找到创建或下载实例密钥的方法.

我是否必须在我的终端手动创建自己的ssh密钥并在创建过程中将它们粘贴到表单中,还是有一些其他明显的步骤我不知道了?

Mis*_*man 58

默认情况下,新的Google Compute Engine(GCE)VM实例没有预先分配SSH密钥,因此您无法"检索"它们,因为它们不存在 - 您可以创建它们,也可以使用工具喜欢gcloud(见下文),如果你还没有SSH密钥,它会提示你创建它们.

您可以通过多种方式连接到新创建的GCE VM.

一种选择是使用Developer Console GUI中的"SSH"按钮连接实例列表中的实例,这将打开浏览器窗口和实例的终端会话.

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

gcloud compute ssh example-instance
Run Code Online (Sandbox Code Playgroud)

您可以在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密钥中所述,您可以通过gcloud或通过Google Cloud Console手动执行此操作.

您还可以创建自己的密钥,ssh-keygen这些密钥gcloud也将在封面下使用.您可以直接使用ssh而不是连接到实例,gcloud但是您需要指定额外的参数来执行此操作:

ssh -i KEY_FILE -o UserKnownHostsFile=/dev/null \
    -o CheckHostIP=no -o StrictHostKeyChecking=no \
    USER@IP_ADDRESS
Run Code Online (Sandbox Code Playgroud)

这将需要以下参数:

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

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

  • IP_ADDRESS - [必需]实例的外部IP地址.

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

  • 我想你是说当创建一个新实例时没有ssh密钥?而且我不能以传统的方式创建ssh密钥,就像我对CentOS服务器那样.相反,我必须使用Google工具glcoud创建ssh密钥.但是一旦创建,我可以正常ssh到实例(即没有gcloud或基于Web的ssh).我试试看.唯一剩下的问题是,这是否会让我获得root权限.在EC2上,您在实例创建期间设置了根ssh密钥,然后在以后创建用户级ssh密钥.由gcloud生成的ssh密钥是否为root密钥? (2认同)
  • 默认情况下,没有SSH密钥添加到实例。我已经更新了有关直接使用`sshk-keygen`和`ssh`的信息的答案。您的登录名将与您的本地用户名相同,但是将具有无密码的“ sudo”访问权限,因此您不会直接以“ root”身份登录,但是“ sudo”将为您提供“ root”访问权限。 (2认同)

Var*_*mar 15

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

  1. ssh-keygen -t rsa -f ~/.ssh/gcloud_instance1 -C varunon9这里 创建一个SSH密钥gcloud_instance1是密钥文件的名称,varunon9是用户名

  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.

  • @Billy - 在 Google Cloud Platform 中,用户名是关键注释(答案示例中的“varunon9”),它必须与您尝试登录的用户名匹配。[参见此](https://superuser.com/q/516912/297406) (2认同)

小智 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 -> Metadata

选择“SSH 密钥”选项卡,然后单击“添加 SSH”密钥

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

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

复制外部 IP vm_instance_external_ip

回到你的 linux 终端并输入

ssh -i google_key.pub用户名@ vm_instance_external_ip

输入“是”

现在你应该可以走了。

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

  • 天啊,两天后就修好了。谢谢你,兄弟。最后的视频链接是对我的案例最有帮助的部分。我猜错误是因为我反复先创建虚拟机实例,然后在元数据部分分配 sshkey。我还是不知道。 (2认同)