问题

问题

问题

如果我没有 SSH 密钥并且 google 用户/最终脚本无法运行,我该如何连接到 Google 实例?

问题背景

运行 Ubuntu 16.04 LTS 的 Google 计算实例。

我更改了其基本版本的 python,以便安装与 python 的“setup-tools”非常挑剔的 python 包。

我的理论是,这个变化破坏了谷歌云脚本的启动,而这是我过去连接实例的唯一方式。

问题详细信息

我们可以验证服务器是否已打开,因为它正在为糟糕的 nginx 网络提供服务:http://35.201.199.224/

如果有人愿意帮助我阅读,我可以在这里分享服务器日志:https://pastebin.com/DF5wsLhH

我认为最重要的部分是这个片段

Mar 21 17:21:50 instance-1 systemd[1]: Started Google Compute Engine Network Daemon.
Mar 21 17:21:51 instance-1 google_network_daemon[1340]: Traceback (most recent call last):
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/bin/google_network_daemon", line 9, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     load_entry_point('google-compute-engine==2.8.4', 'console_scripts', 'google_network_daemon')()
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     return get_distribution(dist).load_entry_point(group, name)
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     return ep.load()
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     return self.resolve()
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     module = __import__(self.module_name, fromlist=['__name__'], level=0)
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/google_compute_engine/networking/network_daemon.py", line 26, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     from google_compute_engine import config_manager
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/google_compute_engine/config_manager.py", line 23, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     from google_compute_engine.compat import parser
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:   File "/usr/lib/python3/dist-packages/google_compute_engine/compat.py", line 23, in <module>
Mar 21 17:21:51 instance-1 google_network_daemon[1340]:     import distro
Mar 21 17:21:51 instance-1 google_network_daemon[1340]: ModuleNotFoundError: No module named 'distro'

我认为它找不到该模块,因为它正在查找错误的 Python 版本。

结论

我确实知道我太懒了,只使用谷歌进行连接'通过 SSH 连接按钮'但我天真地以为西方世界可以说是最好的商业开发商会为我掌控一切。 如此诱人的 ssh 按钮

答案1

您可能需要执行以下操作:

  1. 关闭此虚拟机(不删除磁盘!)
  2. 创建新的虚拟机
  3. 以读/写模式挂载此磁盘
  4. 修复 Python 安装以允许脚本运行,从而启用 SSH 会话

如果此虚拟机正在服务您不能丢失的实时流量,请考虑以下事项:

  1. 从此虚拟机的永久磁盘创建快照
  2. 从快照创建一个新的 GCE VM 实例
  3. 修复它,使其能够运行并处理请求
  4. 将流量重定向到此服务实例
  5. 修复原始磁盘

此外,考虑使用容器来运行需要不同基础工具(如 Python)的特定版本的依赖项,否则可能会与系统工具或外部进程(如 SSH 前/后脚本等)冲突。

相关内容