Google 云 - 通过私钥访问 Linux 虚拟机
Google Cloud - accessing Linux VM via private key
我在 Google 云中创建了一个 linux 虚拟机,现在我正在尝试通过 SSH 访问该虚拟机。
我可以通过 SSH 连接到服务器,如果我通过界面登录到控制台,但是我正在尝试生成一个便携式私钥文件 (pem ) 我可以用它从 anywhere.
远程连接到服务器
我可以在创建 VM 期间在 AWS 或 Azure 上轻松实现这一点,但在 GC 上似乎并非如此。
对于 SSH 访问,您不会使用 pem
密钥。在您的客户端计算机上,您应该 运行(如果在 unix/linux 系统中)ssh-keygen
,这将引导您创建您的 ssh 密钥(默认为 RSA)。然后,您需要将 public 密钥(~/.ssh/id_rsa.pub
或创建期间指定的文件)添加到服务器上的 ~/.ssh/authorized_keys
。
这不是 gcloud 的工作方式。
Google Cloud Platform 实际上在计算服务中创建 VM 实例时预先使用 public 密钥。您可以使用 ssh-keygen 在您的计算机上生成密钥,并通过以下方法将其添加到您的实例中。
你有2个选项。您可以通过编辑实例设置在实例范围内添加 ssh 密钥(屏幕截图 1),或者在计算服务的元数据部分明智地添加 ssh 密钥项目(屏幕截图 2)。
截图1
截图2
在您的工作站上打开一个终端并使用 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.
的 public 密钥文件
[USERNAME]
是您将为其应用此 SSH 密钥的用户。
限制对您的私钥的访问,以便只有您可以读取它,没有人可以写入它。
chmod 400 ~/.ssh/[KEY_FILENAME]
其中 [KEY_FILENAME]
是您用于 SSH 密钥文件的名称。
为每个需要新密钥的用户重复此过程。
如果您使用 ssh-keygen
工具在 Linux 工作站上创建了密钥,密钥将保存在以下位置:
Public 密钥文件:~/.ssh/[KEY_FILENAME].pub
私钥文件:~/.ssh/[KEY_FILENAME]
其中 [KEY_FILENAME]
是 SSH 密钥的文件名,它是在创建密钥时设置的。
从 GCP 控制台添加或删除项目范围的 public SSH 密钥:
在 Google 云平台控制台中,转到项目的元数据页面。可以在GCE菜单下找到。
在 SSH 密钥下,单击编辑。
修改项目范围的 public SSH 密钥:要添加 public SSH 密钥,请单击页面底部的添加项目。这将产生一个文本框。复制 public SSH 密钥文件的内容并将其粘贴到文本框中。对要添加的每个 public 个 SSH 密钥重复此过程。
完成后,单击页面底部的“保存”。
使用 ssh 连接到实例
在终端中,使用 ssh 命令和您的 SSH 私钥文件连接到您的实例。指定您的用户名和您要连接的实例的外部 IP 地址。
ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]
其中:
[PATH_TO_PRIVATE_KEY]
是您的 SSH 私钥文件的路径。
[USERNAME]
是连接到实例的用户名。 public SSH 密钥的用户名是在创建 SSH 密钥时指定的。如果实例具有该用户的有效 public SSH 密钥并且您具有匹配的私有 SSH 密钥,则您可以作为该用户连接到实例。
[EXTERNAL_IP_ADDRESS]
是您实例的外部 IP 地址。
如果连接成功,您可以使用终端在您的实例上执行 运行 命令。完成后,使用 exit 命令断开与实例的连接。
我明白你的意思,但是 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
再次访问即可。
我找到了这个答案,只是想更新对我有用的内容
在您的计算机上安装 gcloud
客户端(无论您希望连接到 VM 的计算机)。
使用您的项目 JSON 密钥验证您的服务
gcloud auth activate-service-account --key-file=[keyfile_for_project].json
在本地机器上创建 ssh
个密钥对
$(which ssh-keygen) -t rsa -C "your@email.com"
- 将您刚刚在
id_rsa.pub
中创建的 public 密钥添加到您的 VM 的元数据中(Mohit Kumar 的回答中包含了这方面的精彩截图)
cat $PWD/id_rsa.pub
(将此输出粘贴到 SSH 密钥元数据中)
ssh
使用您刚刚在 id_rsa
中创建的私钥到 VM 实例
ssh -v -i id_rsa [user]@[external_ip]
如果你想让它便携,只需随身携带私钥 (id_rsa
) public 密钥 (id_rsa.pub
) 配对
我在 Google 云中创建了一个 linux 虚拟机,现在我正在尝试通过 SSH 访问该虚拟机。
我可以通过 SSH 连接到服务器,如果我通过界面登录到控制台,但是我正在尝试生成一个便携式私钥文件 (pem ) 我可以用它从 anywhere.
远程连接到服务器我可以在创建 VM 期间在 AWS 或 Azure 上轻松实现这一点,但在 GC 上似乎并非如此。
对于 SSH 访问,您不会使用 pem
密钥。在您的客户端计算机上,您应该 运行(如果在 unix/linux 系统中)ssh-keygen
,这将引导您创建您的 ssh 密钥(默认为 RSA)。然后,您需要将 public 密钥(~/.ssh/id_rsa.pub
或创建期间指定的文件)添加到服务器上的 ~/.ssh/authorized_keys
。
这不是 gcloud 的工作方式。
Google Cloud Platform 实际上在计算服务中创建 VM 实例时预先使用 public 密钥。您可以使用 ssh-keygen 在您的计算机上生成密钥,并通过以下方法将其添加到您的实例中。
你有2个选项。您可以通过编辑实例设置在实例范围内添加 ssh 密钥(屏幕截图 1),或者在计算服务的元数据部分明智地添加 ssh 密钥项目(屏幕截图 2)。
截图1
截图2
在您的工作站上打开一个终端并使用 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 工作站上创建了密钥,密钥将保存在以下位置:
Public 密钥文件:~/.ssh/[KEY_FILENAME].pub
私钥文件:~/.ssh/[KEY_FILENAME]
其中 [KEY_FILENAME]
是 SSH 密钥的文件名,它是在创建密钥时设置的。
从 GCP 控制台添加或删除项目范围的 public SSH 密钥:
在 Google 云平台控制台中,转到项目的元数据页面。可以在GCE菜单下找到。
在 SSH 密钥下,单击编辑。
修改项目范围的 public SSH 密钥:要添加 public SSH 密钥,请单击页面底部的添加项目。这将产生一个文本框。复制 public SSH 密钥文件的内容并将其粘贴到文本框中。对要添加的每个 public 个 SSH 密钥重复此过程。
完成后,单击页面底部的“保存”。
使用 ssh 连接到实例
在终端中,使用 ssh 命令和您的 SSH 私钥文件连接到您的实例。指定您的用户名和您要连接的实例的外部 IP 地址。
ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]
其中:
[PATH_TO_PRIVATE_KEY]
是您的 SSH 私钥文件的路径。
[USERNAME]
是连接到实例的用户名。 public SSH 密钥的用户名是在创建 SSH 密钥时指定的。如果实例具有该用户的有效 public SSH 密钥并且您具有匹配的私有 SSH 密钥,则您可以作为该用户连接到实例。
[EXTERNAL_IP_ADDRESS]
是您实例的外部 IP 地址。
如果连接成功,您可以使用终端在您的实例上执行 运行 命令。完成后,使用 exit 命令断开与实例的连接。
我明白你的意思,但是 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
再次访问即可。
我找到了这个答案,只是想更新对我有用的内容
在您的计算机上安装 gcloud
客户端(无论您希望连接到 VM 的计算机)。
使用您的项目 JSON 密钥验证您的服务
gcloud auth activate-service-account --key-file=[keyfile_for_project].json
在本地机器上创建
ssh
个密钥对
$(which ssh-keygen) -t rsa -C "your@email.com"
- 将您刚刚在
id_rsa.pub
中创建的 public 密钥添加到您的 VM 的元数据中(Mohit Kumar 的回答中包含了这方面的精彩截图)
cat $PWD/id_rsa.pub
(将此输出粘贴到 SSH 密钥元数据中) ssh
使用您刚刚在id_rsa
中创建的私钥到 VM 实例ssh -v -i id_rsa [user]@[external_ip]
如果你想让它便携,只需随身携带私钥 (id_rsa
) public 密钥 (id_rsa.pub
) 配对