5.3. 使用 SSH 连接到虚拟机

要使用 SSH 连接协议与虚拟机(VM)终端进行交互,请按照以下流程操作。

先决条件

  • 有对目标虚拟机的网络连接和 root 访问权限。
  • 如果目标虚拟机位于远程主机上,您也可以拥有对该主机的连接和 root 访问权限。
  • 您的虚拟机网络由 libvirt 生成的 dnsmasq 分配 IP 地址。这是 libvirt NAT 网络 中的示例。

    值得注意的是,如果您的虚拟机使用以下网络配置之一,则无法使用 SSH 连接到虚拟机:

    • hostdev 接口
    • 直接接口
    • 网桥接口
  • 在虚拟机主机上已安装并启用了 libvirt-nss 组件。如果没有,请执行以下操作:

    1. 安装 libvirt-nss 软件包:

      # dnf install libvirt-nss
    2. 编辑 /etc/nsswitch.conf 文件,并将 libvirt_guest 添加到 hosts 行中:

      ...
      passwd:      compat
      shadow:      compat
      group:       compat
      hosts:       files libvirt_guest dns
      ...

流程

  1. 当连接到远程虚拟机时,请首先 SSH 到其物理主机。以下示例演示了如何使用其 root 凭证连接到主机 192.0.2.1

    # ssh root@192.0.2.1
    root@192.0.2.1's password:
    Last login: Mon Sep 24 12:05:36 2021
    root~#
  2. 使用虚拟机的名称和用户访问凭证来连接它。例如,以下命令使用其 root 凭证连接到 testguest1 虚拟机:

    # ssh root@testguest1
    root@testguest1's password:
    Last login: Wed Sep 12 12:05:36 2018
    root~]#

故障排除

  • 如果您不知道虚拟机的名称,您可以使用 virsh list --all 命令列出主机上所有可用的虚拟机:

    # virsh list --all
    Id    Name                           State
    ----------------------------------------------------
    2     testguest1                    running
    -     testguest2                    shut off

其它资源