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