【问题标题】:How to SSH into a GCE Instance created from a custom image?如何通过 SSH 连接到从自定义映像创建的 GCE 实例?
【发布时间】:2014-03-19 19:37:35
【问题描述】:

我在使用 ssh 登录从自定义映像创建的 VM 时遇到问题。

我按照creating an image from an existing GCE instance 的步骤操作。

我已成功创建图像,将其上传到 Google Cloud Storage 并将其作为图像添加到我的项目中,但是当我尝试连接到新图像时,我收到“连接被拒绝”。

我可以看到新映像在其他端口上运行的其他应用程序,因此似乎只有 ssh 受到影响。

我做的步骤如下:

...create an image from existing GCE instance (one I can log into fine via ssh)..then:

gcutil --project="river-ex-217" addimage example2 http://storage.googleapis.com/example-image/f41aca6887c339afb0.image.tar.gz
gcutil --project="river-ex-217" addinstance --image=example2 --machinetype=n1-standard-1 anothervm
gcutil --service_version="v1" --project="river-ex-217" ssh --zone="europe-west1-a" "anothervm"

哪些输出:

INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/mark1/.ssh/google_compute_engine -A -p 22 mark1@23.251.133.2 --
ssh: connect to host 23.251.133.2 port 22: Connection refused

我已尝试按照另一个 SO 答案中的建议删除 sshKeys 元数据,然后重新连接这样做:

INFO: Updated project with new ssh key. It can take several minutes for the instance to pick up the key.
INFO: Waiting 120 seconds before attempting to connect.
INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/mark1/.ssh/google_compute_engine -A -p 22 mark1@23.251.133.2 --
ssh: connect to host 23.251.133.2 port 22: Connection refused

然后我在另一个区域尝试第一个实例,它与新密钥一起工作正常:

gcutil --service_version="v1" --project="river-ex-217" ssh --zone="europe-west1-b" "image1"

两个实例都在同一个“默认”网络上运行,端口 22 运行,并且 ssh 适用于创建映像的第一个实例。

我在另一个实例和我的本地机器上尝试了 nc 命令,它没有显示输出:

nc 23.251.133.2 22

...而原始 VM 的 ip 显示此输出:

nc 192.157.29.255 22
SSH-2.0-OpenSSH_6.0p1 Debian-4

我尝试重新制作图像并重新添加实例,没有区别。

我已经尝试登录到第一个实例,并将用户切换到该机器上的一个(应该与第二台机器相同?),然后从那里 ssh。

WARNING: You don't have an ssh key for Google Compute Engine. Creating one now...
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
INFO: Updated project with new ssh key. It can take several minutes for the instance to pick up the key.
INFO: Waiting 300 seconds before attempting to connect.
INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /home/mark/.ssh/google_compute_engine -A -p 22 mark@23.251.133.2 -- --zone=europe-west1-a
ssh: connect to host 23.251.133.2 port 22: Connection refused

我没有想法,非常感谢任何帮助 :) 令人抓狂的是,我可以看到新 VM 已经准备好应用程序,我只需要向它添加一些文件并设置一些 cronjobs。我想我可以做这个预映像制作,但我希望能够在以后登录并修改它,而不需要每次都花费 1 小时来创建映像和启动新实例。

您忠实的, 标记

【问题讨论】:

  • 遇到同样的问题。
  • 我也在 GoogleGroup 中发帖,一个 Google 人员正在查看它,使用“gcutil getserialportoutput ”的输出来帮助追踪它
  • 我最终只是删除了我的永久磁盘并重新开始:/ 幸运的是我们有一个非常好的 create_dev_env 脚本,否则这真的不是一个选择。
  • 请问您的实例上安装了什么?我有 R、Rstudio、Shiny、Apache。谷歌支持正在调查它,看看这是否是一个问题。另外,您在登录该项目的 Google API 控制台时遇到问题吗?我无法登录并出现错误。
  • 我的完整堆栈是 Redis/Postgres/Flask/Tornado/Boostrap 和一堆 fortran(scipy、numpy、sklearn、skimage)。登录 API 控制台没有任何问题。

标签: ssh google-compute-engine


【解决方案1】:

这个问题似乎是关于如何调试图像的 SSH 连接问题,所以这是我的答案。

您的实例可能没有正确运行 SSH 服务器。准备好的图片可能有问题。

问自己可能有用的调试问题:

  • 您是使用 gcimagebundle 捆绑图像还是手动进行?考虑使用该工具来确保您没有遗漏任何内容。
  • 在捆绑映像之前,您是否对 ssh 服务器配置进行了任何更改?
  • 当实例启动时,检查它的控制台输出是否有 ssh 消息 - 它应该提到重新生成密钥、启动 sshd 守护程序并监听端口 22。如果它没有或抱怨与 ssh 相关的事情,你应该跟进那个。

您已经介绍了这些,但为了完整起见,还应检查这些:

  • 您能否在虚拟机启动后访问它?它是响应网络服务器端口(如果有)还是响应 ping?
  • 仔细检查您的虚拟机所在的网络是否允许从您连接的主机进行 SSH(端口 22)访问。

您可以将您的 ssh 设置与工作映像的设置进行比较:

  • 从您的映像创建一个新磁盘 (disk-mine-1)。
  • 从任何工作启动映像(例如 debian wheezy 映像)创建一个新磁盘 (disk-upstream-1)。
  • 将这两个都附加到您可以访问的 VM(在控制台上或从 cli 上)。
  • SSH 进入虚拟机。
  • 挂载两个镜像(sudo mkdir /mnt/{mine,upstream} && sudo mount /dev/sdb1 /mnt/mine && sudo mount /dev/sdc1 /mnt/upstream)。请注意,您的图片是 sdb 还是 sdc 取决于您附加图片的顺序!
  • 查找 ssh 配置之间的差异 (diff -waur /mnt/{mine,upstream}/etc/ssh)。除非您特别需要,否则不应有。
  • 还要检查您的图像是否有正确的 /mnt/mine/etc/init.d/{ssh,generate-ssh-hostkeys} 脚本。它们还应该从 /mnt/mine/etc/rc{S,2}.d 链接(分别为 S10generate-ssh-hostkeys 和 S02ssh)。

【讨论】:

    猜你喜欢
    • 2015-02-03
    • 2015-01-24
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多