Google Cloud-通过私钥访问Linux VM

时间:2018-11-19 16:49:39

标签: google-cloud-platform google-compute-engine ssh-keys

我已经在Google云中创建了一个Linux VM,现在我正尝试通过SSH访问该VM。

我能够通过SSH SSH到服务器,如果我通过界面登录到控制台,但是我试图生成可使用的便携式私钥文件(pem)可以从任何地方将其远程连接到服务器。

在创建VM的过程中,我可以在AWS或Azure上轻松实现这一目标,但在GC上似乎并非如此。

5 个答案:

答案 0 :(得分:2)

这不是gcloud的工作方式。

在计算服务中创建VM实例时,Google Cloud Platform实际上实际上预先获得了公共密钥。您可以使用ssh-keygen在计算机上生成密钥,并通过以下方法将其添加到实例中。

您有2个选项。您可以通过编辑实例设置来添加整个实例的ssh密钥(屏幕截图1),或者在计算服务的元数据部分中明智地添加ssh密钥项目(屏幕截图2)。

Screenshot1

Screenshot 1

截屏2

Screenshot 2

答案 1 :(得分:1)

在工作站上打开一个终端,然后使用ssh-keygen命令生成一个新密钥。指定-C标志以使用您的用户名添加评论。

ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]

其中: [KEY_FILENAME]是您要用于SSH密钥文件的名称。例如,文件名my-ssh-key生成一个名为my-ssh-key的私钥文件和一个名为my-ssh-key.pub的公钥文件。

[USERNAME]是将为其应用此SSH密钥的用户。

限制访问您的私钥,以便只有您可以读取它,而没有人可以写入它。

chmod 400 ~/.ssh/[KEY_FILENAME]

其中[KEY_FILENAME]是您用于SSH密钥文件的名称。 对需要新密钥的每个用户重复此过程。

如果您使用ssh-keygen工具在Linux工作站上创建了密钥,则密钥将保存在以下位置:

公开密钥文件:~/.ssh/[KEY_FILENAME].pub

私钥文件:~/.ssh/[KEY_FILENAME]

其中[KEY_FILENAME]是SSH密钥的文件名,该密钥是在创建密钥时设置的。

要从GCP控制台添加或删除项目范围的公共SSH密钥,请执行以下操作:

在Google Cloud Platform控制台中,转到项目的元数据页面。可以在GCE菜单下找到。

在“ SSH密钥”下,单击“编辑”。

修改项目范围的公共SSH密钥:要添加公共SSH密钥,请单击页面底部的“添加项目”。这将产生一个文本框。复制公共SSH密钥文件的内容并将其粘贴到文本框中。对要添加的每个公共SSH密钥重复此过程。

完成后,单击页面底部的保存。

使用ssh连接到实例

在终端中,使用ssh命令和您的私有SSH密钥文件连接到您的实例。指定您的用户名和要连接的实例的外部IP地址。

ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]

其中: [PATH_TO_PRIVATE_KEY]是私有SSH密钥文件的路径。

[USERNAME]是连接到实例的用户的名称。创建SSH密钥时,指定了公共SSH密钥的用户名。如果实例具有针对该用户的有效公共SSH密钥,并且您具有匹配的专用SSH密钥,则可以该用户身份连接到该实例。

[EXTERNAL_IP_ADDRESS]是您的实例的外部IP地址。 如果连接成功,则可以使用终端在实例上运行命令。完成后,使用exit命令与实例断开连接。

答案 2 :(得分:1)

我了解您的意思,但Google会自动完成。

任何本地计算机中,首先获取具有正确访问权限的服务帐户json。

通过

授权了gcloud
gcloud auth activate-service-account --key-file=KEY_FILE.json

然后

gcloud compute config-ssh [--ssh-config-file=SSH_CONFIG_FILE] [--ssh-key-file=SSH_KEY_FILE]

您可能已经有ssh文件,但是如果您只是让gcloud生成它就可以了。

最后,您可以通过以下方式从这台计算机SSH到任何计算引擎中,

gcloud compute ssh [USER@]INSTANCE

下一次在同一台计算机上时,您只需使用gcloud compute ssh即可再次访问它。

答案 3 :(得分:1)

我找到了这个答案,只是想更新对我有用的东西

在您的计算机上安装了gcloud客户端(您希望与之连接到VM的任何计算机)。

  1. 使用项目JSON密钥对服务进行身份验证
    gcloud auth activate-service-account --key-file=[keyfile_for_project].json

  2. 在本地计算机上创建ssh密钥对
    $(which ssh-keygen) -t rsa -C "your@email.com"

  3. 将您刚刚在id_rsa.pub中创建的公钥添加到VM的元数据中(Mohit Kumar的答案中包括了该快照的大屏幕截图)
    cat $PWD/id_rsa.pub(将此输出粘贴到SSH密钥元数据中)
  4. 使用您刚在ssh中创建的私钥
  5. id_rsa到VM实例
    ssh -v -i id_rsa [user]@[external_ip]

如果您想使其便携,只需随身携带一对私钥(id_rsa)和公钥(id_rsa.pub

答案 4 :(得分:0)

对于SSH访问,您无需使用pem密钥。在客户端计算机上,应该运行ssh-keygen(如果在unix / linux系统中),它将逐步引导您创建ssh密钥(默认为RSA)。然后,您需要将公用密钥(~/.ssh/id_rsa.pub或在创建过程中指定的文件)添加到服务器上的~/.ssh/authorized_keys