我想使用 virt-manager 来管理在远程主机上运行的 libvirt/kvm 虚拟机,但我用来 ssh 到该主机的方法有点复杂。我需要使用自定义端口以及具有多个跳数的代理转发。例如,要 ssh 到该 KVM 盒,我使用默认标识证书并执行以下命令:
ssh -At -p 4188 www.example.com ssh -At -p 8854 virt-host.internals.int
Virtmanager 远程连接的对话框看起来相当原始,我想知道是否有解决方法?
答案1
我认为你遇到了两个问题。
- 建立通过堡垒主机的单个 ssh 连接。
这基本上是同一个问题如何在机器之间进行多跳 SCP 传输?所以请先阅读一下。
- 现在您知道如何在命令行上更透明地处理它,您需要进行设置,以便它在没有 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