Virtmanager 通过自定义 SSH 命令连接?

Virtmanager 通过自定义 SSH 命令连接?

我想使用 virt-manager 来管理在远程主机上运行的 libvirt/kvm 虚拟机,但我用来 ssh 到该主机的方法有点复杂。我需要使用自定义端口以及具有多个跳数的代理转发。例如,要 ssh 到该 KVM 盒,我使用默认标识证书并执行以下命令:

ssh -At -p 4188 www.example.com ssh -At -p 8854 virt-host.internals.int

Virtmanager 远程连接的对话框看起来相当原始,我想知道是否有解决方法?

答案1

我认为你遇到了两个问题。

  1. 建立通过堡垒主机的单个 ssh 连接。

这基本上是同一个问题如何在机器之间进行多跳 SCP 传输?所以请先阅读一下。

  1. 现在您知道如何在命令行上更透明地处理它,您需要进行设置,以便它在没有 CLI 选项的情况下发生。

~/.ssh/config为执行 ssh 的用户设置一个文件。(几乎?)您可以在 ssh 命令行上指定的任何内容,都可以在配置文件中指定。

为此,您需要执行以下操作:

host www.example.com
    port 4188
    forwardagent yes
host virt-host.internals.int
    proxycommand ssh www.example.com nc virt-host.internals.int 8854 

我还没有测试过这个,所以语法可能不正确,但它应该可以让你朝着正确的方向前进。

请注意,它假设您可以从原始客户端计算机解析名称 virt-host.internals.int。事实可能并非如此(仅限内部 DNS),在这种情况下,您必须以某种方式进行拼凑(例如/etc/hosts,使用 ip 而不是主机名等)。


更新 2023:您现在可以将 ProxyJump 参数用于 ssh。它会自动为您通过堡垒主机建立隧道。需要较新版本的 ssh 才能工作。

如果你的 ssh 命令支持它,你可以简单地做这样的事情,而不是上面列出的胡言乱语:

host virt-host.internals.int
   ProxyJump www.example.com  

相关内容