我使用 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
机器在同一个网络上(基本上是虚拟的)。您可以ping
从ssh
一台机器切换到另一台机器。有两种可能性:
跑步当地的
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
应该不需要输入密码就可以工作