我已经在Google云中创建了一个Linux VM,现在我正尝试通过SSH访问该VM。
我能够通过SSH SSH到服务器,如果我通过界面登录到控制台,但是我试图生成可使用的便携式私钥文件(pem)可以从任何地方将其远程连接到服务器。
在创建VM的过程中,我可以在AWS或Azure上轻松实现这一目标,但在GC上似乎并非如此。
答案 0 :(得分:2)
这不是gcloud的工作方式。
在计算服务中创建VM实例时,Google Cloud Platform实际上实际上预先获得了公共密钥。您可以使用ssh-keygen在计算机上生成密钥,并通过以下方法将其添加到实例中。
您有2个选项。您可以通过编辑实例设置来添加整个实例的ssh密钥(屏幕截图1),或者在计算服务的元数据部分中明智地添加ssh密钥项目(屏幕截图2)。
Screenshot1
截屏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。
通过
授权了gcloudgcloud 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的任何计算机)。
使用项目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
中创建的公钥添加到VM的元数据中(Mohit Kumar的答案中包括了该快照的大屏幕截图)cat $PWD/id_rsa.pub
(将此输出粘贴到SSH密钥元数据中)ssh
中创建的私钥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
。