在 Gandi(或其他供应商)上,您可以为您的虚拟机激活紧急控制台。它将 SSH 通道绑定到临时 IP 和端口。
我有自己的服务器在 xen 上运行。我想实现一个紧急控制台,但我不知道从哪里开始。
可以使用xm console <servername>
命令访问控制台。我想可以将 stdin/stdout/stderr 绑定到在所选随机端口上运行的 SSH 服务器。
总体思路是,当有人需要紧急访问他们的虚拟机时,他们可以使用自己的凭据登录管理程序网站并点击“启用我的紧急 SSH 访问”。从那里随机端口绑定到虚拟机一段指定的持续时间。
另一种说法是, Gandi是如何在无需重启虚拟机的情况下实现紧急控制台访问的?
一个有点 hacky 的解决方案可能是使用包含 VM 所有者公钥的 authorized_keys 动态创建一个 ssh 帐户。外壳将设置为
xm console <servername> && <command to remove the user again>
.当然,您需要考虑用户退出 xm 会话的安全隐患。
可能的解决方案
离线:严格 SSH 访问
将二进制文件注入正在运行的 Xen 虚拟机以使其创建 SSH 服务器并访问文件系统是不可行的。
如果您严格需要打开紧急 SSH 会话,则必须销毁虚拟机,然后将其磁盘附加到具有正在运行的 SSH 服务器的单独的通用只读救援映像。救援映像将取代损坏的客户机,虚拟机管理员可以使用此救援映像进行任何必要的更改以修复损坏的客户机。
通过主机:允许控制台访问
微笑龙的回答解释了如何做到这一点,但这对于安全性来说是一个非常糟糕的主意。
在线:VNC 代理
由于允许通过主机上的 SSH 进行控制台访问并非易事(微笑龙的回答),您可以使用noVNC之类的东西设置 VNC 代理,并使用身份验证令牌保护 VNC 会话。 OpenStack 做到了这一点。
此解决方案是一种相当安全的方式(如果实施得当,如 OpenStack),可以让虚拟机管理员访问实时运行的实例,但它需要大量的工程才能正确设置。