代码之家  ›  专栏  ›  技术社区  ›  Benjamin

谷歌云-通过私钥访问Linux虚拟机

  •  1
  • Benjamin  · 技术社区  · 6 年前

    我已经在谷歌云上创建了一个Linux虚拟机,现在我正试图通过ssh访问这个虚拟机。

    如果我通过接口登录到控制台,我可以很容易地通过ssh连接到服务器,但是我正在尝试生成一个私钥文件(pem),我可以使用它从远程连接到服务器。 在任何地方 ?

    在创建虚拟机的过程中,我可以在AWS或Azure上轻松实现这一点,但在GC上似乎不是这样。

    4 回复  |  直到 6 年前
        1
  •  1
  •   MT-FreeHK    6 年前

    我明白你的意思,但谷歌会更自动地做到这一点。

    任何本地计算机 ,首先获取具有正确访问权限的服务帐户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 再次访问它。

        2
  •  1
  •   MyStackRunnethOver Khanna111    6 年前

    打开工作站上的终端,使用ssh keygen命令生成新密钥。指定-c标志以添加带有用户名的注释。

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

    在哪里? [KEY_FILENAME] 是要用于ssh密钥文件的名称。例如,我的ssh密钥的文件名生成一个名为my ssh key的私钥文件和一个名为my-ssh-key.pub的公钥文件。

    [USERNAME] 您将为其应用此ssh密钥的用户。

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

    chmod 400 ~/.ssh/[KEY_FILENAME]

    在哪里? [密钥\u文件名] 是用于ssh密钥文件的名称。 对每个需要新密钥的用户重复此过程。

    如果在Linux工作站上使用 ssh-keygen 工具,键保存在以下位置:

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

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

    在哪里? [密钥\u文件名] 是创建密钥时设置的ssh密钥的文件名。

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

    在Google云平台控制台中,转到项目的元数据页面。它可以在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密钥文件的路径。

    [用户名] 是连接到实例的用户的名称。创建ssh密钥时指定了公共ssh密钥的用户名。如果实例具有该用户的有效公共ssh密钥,并且具有匹配的私有ssh密钥,则可以作为该用户连接到实例。

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

        3
  •  0
  •   jamie schnaitter    6 年前

    对于ssh访问,您不会使用 pem 关键。在您的客户机上,您应该运行(如果在UNIX/Linux系统中) ssh-keygen 这将引导您完成创建ssh密钥的过程(默认值是rsa)。然后需要添加公钥( ~/.ssh/id_rsa.pub 或在创建过程中指定的文件)到 ~/.ssh/authorized_keys 在服务器上。

        4
  •  0
  •   mohit    6 年前

    这不是gcloud的工作方式。

    当您在计算服务中创建虚拟机实例时,Google云平台实际上提前获取了公钥。您可以使用ssh keygen在您的计算机上生成密钥,并通过以下方法将其添加到您的实例中。

    你有两个选择。您可以通过编辑实例设置来添加ssh密钥实例范围(屏幕截图1),也可以在计算服务(屏幕截图2)的元数据部分中添加ssh密钥项目。

    屏幕截图1

    截图2

    服务。您可以使用ssh keygen在您的机器上生成密钥,并通过以下方法将其添加到您的实例中。

    你有两个选择。您可以通过编辑实例设置来添加ssh-key实例范围(屏幕截图1),也可以在计算服务(屏幕截图2)的元数据部分中添加ssh-key项目。

    屏幕截图1

    Screenshot 1

    屏幕截图2

    Screenshot 2