我是来自Amazon EC2世界的新Google Cloud试用用户,我对如何通过ssh登录新的Google Compute Engine VM实例感到困惑。
我通过Google Cloud网络控制台创建了一个新实例(如果重要的话,可以从CentOS 6.x映像中创建)。我在创建表单上看到一个空白,我可以粘贴现有的ssh密钥,但由于这是我的第一个实例,我还没有。我认为它会带我完成像Amazon EC2那样的密钥创建过程。它没有。它似乎已经创建了实例,但我无法弄清楚如何获取它的ssh密钥。实例网页上有一个按钮,上面写着" ssh"它让我通过一个模拟ssh会话的弹出式Web浏览器窗口进行简要登录。但是,它只允许我进入用户级帐户,而不是root。弹出窗口有一个菜单项来更改用户,我将其更改为" root"之后它只会产生连接错误,现在我根本无法登录我的实例。
我已经搜索过但无法找到解释谷歌计算实例这方面的任何直接文档。我已经搜索过Web控制台,但无法找到ssh密钥创建/选择机制,也无法创建或下载实例的密钥。
我是否必须在我的终端手动创建自己的ssh密钥并在创建过程中将其粘贴到表单中,或者是否还有其他一些显而易见的步骤?
答案 0 :(得分:45)
默认情况下,新的Google Compute Engine(GCE)VM实例没有预先分配SSH密钥,因此您无法“检索”它们,因为它们不存在 - 您可以自行创建它们,或者使用像gcloud
这样的工具(见下文),如果你还没有SSH密钥,它会提示你创建它们。
您可以通过多种方式连接到新创建的GCE VM。
一个选项是使用Developer Console GUI中的“SSH”按钮连接实例列表中的实例,这将打开浏览器窗口和实例的终端会话。
如果您想通过命令行上的SSH客户端进行连接,可以使用gcloud
工具(Google Cloud SDK的一部分):
gcloud compute ssh example-instance
您可以在gcloud compute ssh
帮助页面上看到完整的标记和选项,以及几个示例。
如果您还没有SSH密钥,它将提示您创建它们,然后连接到该实例。如果您已经拥有密钥,则可以使用现有的SSH密钥,它将传输到实例。
默认情况下,gcloud
要求密钥位于以下路径:
$HOME/.ssh/google_compute_engine
- 私钥$HOME/.ssh/google_compute_engine.pub
- 公钥如果您要使用gcloud
重新使用其他位置的密钥,请考虑使用符号链接或使用--ssh-key-file
标记指向gcloud
。
注意:如果您根本不使用gcloud
,则必须手动将SSH密钥添加到实例的元数据中,如Setting up ssh keys at the instance level中所述,您可以执行此操作通过gcloud
或手动通过Google Cloud console。
您还可以使用ssh-keygen
创建自己的密钥,gcloud
也将使用gcloud
。您可以连接到实例using ssh
directly而不是ssh -i KEY_FILE -o UserKnownHostsFile=/dev/null \
-o CheckHostIP=no -o StrictHostKeyChecking=no \
USER@IP_ADDRESS
,但您需要指定额外的参数来执行此操作:
KEY_FILE
将需要以下参数:
~/.ssh/google_compute_engine
- [必填]密钥存储在计算机上的文件,例如USER
。
gcloud compute
- [必需]登录该实例的用户名。通常,这是运行IP_ADDRESS
的本地用户的用户名。
{{1}} - [必需]实例的外部IP地址。
有关详细信息,请参阅SSH docs。
答案 1 :(得分:6)
使用ssh登录到实例[[在Linux Ubuntu 16.04上执行的所有步骤]
在此处创建SSH密钥ssh-keygen -t rsa -f ~/.ssh/gcloud_instance1 -C varunon9
gcloud_instance1
是密钥文件的名称,varunon9
是用户名
打印公钥文件cd ~/.ssh && cat gcloud_instance1.pub
将公共密钥文件的内容(cd ~/.ssh && cat gcloud_instance1.pub
的输出)粘贴到ssh-keys文本区域中
单击“保存”
您现在可以从终端通过ssh ssh -i gcloud_instance1 varunon9@35.200.201.56
登录到实例,其中gcloud_instance1
是私钥文件(在.ssh目录中),varunon9
是用户名,{{1 }}是您实例的外部IP。
答案 2 :(得分:1)
打开控制台后,尝试在ssh选项卡中查看gcloud命令。 gcloud客户端将使用以下命令打开。
gcloud computing --project ssh --zone
如果是第一次,它将为您创建ssh密钥。您只需要使用右上角的gcloud客户端下载文件选项,在此位置〜/ .ssh / google_compute_engine 中下载文件。拥有密钥文件后,只需发出
ssh -i username @ external_IP
答案 3 :(得分:1)
为多个实例创建和使用一对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 Computing下创建您喜欢的VM实例。
复制外部IP vm_instance_external_ip
回到您的Linux终端并输入
ssh -i google_key.pub 用户名 @ vm_instance_external_ip
输入“是”
现在你应该很好了。
如果您需要视频说明,请see here
答案 4 :(得分:0)
答案 5 :(得分:0)
概念很简单, 如果您拥有SSH私钥,则可以连接到上面给出的服务器答案,即@isma很简单
如此
OR
使用腻子下载@Abubacker提到的私钥 然后打开腻子
答案 6 :(得分:0)
要在您的机器中填充 SSH 配置文件,请使用:
gcloud compute config-ssh
答案 7 :(得分:0)
对于想要将项目范围的 SSH 密钥添加到其 Google Cloud Platform (GCP) 项目的任何人,$GCP_PROJECT_NAME
:
生成基于 Ed25519 的 SSH 密钥:
ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"
#=>
Generating public/private ed25519 key pair.
Enter file in which to save the key (/. . ./.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ed25519.
Your public key has been saved in id_ed25519.pub.
The key fingerprint is:
SHA256:. . . "$(whoami)@$(hostname)"
The key's randomart image is:
+--[ED25519 256]--+
| . . . |
+----[SHA256]-----+
从 here 安装 Google Cloud SDK (gcloud
)
确保您以正确的用户身份登录:
gcloud config list --format="value(core.account)"
如果没有,请登录:
gcloud auth login
确保您通过以下方式连接到 $GCP_PROJECT_NAME
:
gcloud config list --format="value(core.project)"
如果没有,切换到$GCP_PROJECT_NAME
:
gcloud config set project $GCP_PROJECT_NAME
利用可用于 filter()
的 firstof()
和 gcloud
transforms 可以避免生成临时文件而只使用 单个< /strong> 命令将该 SSH 密钥添加到 $GCP_PROJECT_NAME
:
gcloud compute project-info add-metadata \
--metadata ssh-keys="$(gcloud compute project-info describe \
--format="value(commonInstanceMetadata.items.filter(key:ssh-keys).firstof(value))")
$(whoami):$(cat ~/.ssh/id_ed25519.pub)"
#=>
Updated [https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME].
您现在应该在 $GCP_PROJECT_NAME
中看到基于 Ed25519 的 SSH 密钥;检查:
gcloud compute project-info describe \
--format="value(commonInstanceMetadata.items.filter(key:ssh-keys).firstof(value))"
使用 OpenSSH 将 shell 保护到计算虚拟机 (VM) 中非常简单:
为您希望保护外壳的 VM 找到外部 IP ($GCP_VM_ADDRESS
):
gcloud compute instances list \
--format=table"[box=true](name:label=NAME, networkInterfaces[].accessConfigs[].natIP.flatten():label=EXTERNAL_IP)"
#=>
┌──────────────┬─────────────────┐
│ NAME │ EXTERNAL_IP │
├──────────────┼─────────────────┤
│ . . . │ . . . │
│ $GCP_VM_NAME │ $GCP_VM_ADDRESS │
│ . . . │ . . . │
└──────────────┴─────────────────┘
注意:如果您尚未创建 VM,请务必按照说明 here 进行操作。
您应该现在能够:
ssh $(whoami)@$GCP_VM_ADDRESS