如何通过 SSH 隧道连接到本地 KVM 客户机

如何通过 SSH 隧道连接到本地 KVM 客户机

我使用 Virt-manager 在 Debian 上进行虚拟化。我想通过远程 SSH 隧道连接到我的客户机。客户机也在本地 Debian 机器上。这可以吗?

我已经尝试过这个命令这里

ssh -f -L 5900:localhost:5900 USERNAME@REMOTE-PC-B-PUBLIC-IPADDRESS -N -p 22

但是,我收到了以下消息:

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 5901
Could not request local forwarding.

所以我将本地端口改为这个。

ssh -f -L 5920:localhost:5900 USERNAME@REMOTE-PC-B-PUBLIC-IPADDRESS -N -p 22

看起来运行正常。没有错误消息。

现在我使用 Vinagre 连接到客人localhost:5900。窗口正在显示。

流量是否仍通过 SSH 隧道?

窗户

Vinagre 中还有一个用于添加 SSH 主机的文件。但是,当我在那里输入域/IP 时,它会提示输入密码。如果我每次连接关闭时都输入密码。对此有什么建议吗?

我必须使用 Spice 或 VNC 选项吗?

我用了两天时间在 Google 上寻找解决办法。

因此,我感兴趣的是其他人如何在本地机器和(本地)客户机器之间创建加密的 SSH 隧道以及如何连接它。

答案1

因此,我感兴趣的是其他人如何在本地机器和(本地)客户机器之间创建加密的 SSH 隧道以及如何连接它。

这真的取决于用例是什么。你只是发布了一些命令,但没有任何信息在哪里您是否运行它,这非常关键。所以让我说清楚。您的GUEST机器和HOST机器在同一个网络上(基本上是虚拟的)。您可以pingssh一台机器切换到另一台机器。有两种可能性:

  • 跑步当地的HOST从机器进行端口转发:

    ssh -f -L 5920:localhost:5900 GUEST_USER@GUEST_IP -N
    
  • 跑步偏僻的GUEST从机器进行端口转发:

    ssh -f -R 5920:localhost:5900 HOST_USER@HOST_IP -N
    

然后使用您的软件连接到localhost, 端口5920(如屏幕截图所示,您在那里输入 5900),并且到该端口的所有流量都应转发到该GUEST端口5900


但无论如何,我认为这不是必需的。如果您想建立主机-客户机连接,您永远不会离开虚拟网络,也没有必要这样做昂贵的GUEST-IP:5900加密。如果服务正在监听外部 IP,您应该能够直接连接。

答案2

您可以使用 virt-viewer 吗?

virt-viewer --connect qemu+ssh://root@KVM_HOST:22/system VM_NAME

那么就不需要再使用 ssh 隧道了

答案3

确保您的 ssh 密钥位于虚拟机的主机上(上例中的 172.18.10.184)!如果需要调谐,则需要一些扩展

就我而言,我进行了 ssh 端口转发,因为我的虚拟机主机无法直接从 Web 访问

ssh -L 10023:172.18.10.184:22 myPlaceToGo -p2222

进而

virt-viewer --connect qemu+ssh://myUsr@localhost:10023/system 2

有些ssh -10023 myPlaceToGo应该不需要输入密码就可以工作

相关内容