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

hda*_*ave 4 virtualization ssh ssh-tunnel virt-manager kvm-virtualization

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

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

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

Dan*_*tts 6

我认为你有两个问题。

1) 建立一个通过堡垒主机的 ssh 连接。

这与如何进行多跳 SCP 传输基本相同的问题所以先去读吧。

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

~/.ssh/config为执行 ssh'ing 的用户设置一个文件。(几乎?)您可以在 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 
Run Code Online (Sandbox Code Playgroud)

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

请注意,它假定您可以从原始客户端计算机解析名称 virt-host.internals.int。情况可能并非如此(仅限内部 dns),在这种情况下,您将不得不以某种方式混合它(例如/etc/hosts,使用 ip 而不是主机名等)。

  • 我发现新版本的 ssh 内置了 `nc`,所以我的 ProxyCommand 需要是 `ProxyCommand ssh -p 2188 www.example.com -W virt-hosts.internals.int:8854`。我还要补充一点,ssh 足够聪明,不会在执行代理命令之前尝试解析内部主机名。必须喜欢 SSH。 (4认同)