如何将 Incus 暴露到网络

默认情况下,Incus 只能通过 Unix 套接字供本地用户使用,不能通过网络访问。

要将 Incus 暴露到网络,您必须将其配置为监听除本地 Unix 套接字以外的地址。为此,请设置 core.https_address 服务器配置选项。

例如,要允许在端口 8443 上访问 Incus 服务器,请输入以下命令

incus config set core.https_address :8443

要允许通过特定 IP 地址访问,请使用 ip addr 查找可用地址,然后设置它。例如

user@host:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever    inet6 ::1/128 scope host       valid_lft forever preferred_lft forever2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000    link/ether 00:16:3e:e3:f3:3f brd ff:ff:ff:ff:ff:ff    inet 10.68.216.12/24 metric 100 brd 10.68.216.255 scope global dynamic enp5s0       valid_lft 3028sec preferred_lft 3028sec    inet6 fd42:e819:7a51:5a7b:216:3eff:fee3:f33f/64 scope global mngtmpaddr noprefixroute       valid_lft forever preferred_lft forever    inet6 fe80::216:3eff:fee3:f33f/64 scope link       valid_lft forever preferred_lft forever3: incusbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000    link/ether 00:16:3e:8d:f3:72 brd ff:ff:ff:ff:ff:ff    inet 10.64.82.1/24 scope global incusbr0       valid_lft forever preferred_lft forever    inet6 fd42:f4ab:4399:e6eb::1/64 scope global       valid_lft forever preferred_lft forever
user@host:~$ incus config set core.https_address 10.68.216.12

然后所有远程客户端都可以连接到 Incus 并访问标记为公共使用的任何镜像。

使用 Incus 服务器进行身份验证

为了能够访问远程 API,客户端必须使用 Incus 服务器进行身份验证。有几种身份验证方法;有关详细信息,请参见 远程 API 身份验证

推荐的方法是将客户端的 TLS 证书通过信任令牌添加到服务器的信任存储中。要使用信任令牌对客户端进行身份验证,请完成以下步骤

  1. 在服务器上,请输入以下命令

    incus config trust add <client_name>
    

    该命令将生成并打印一个令牌,该令牌可用于添加客户端证书。

  2. 在客户端上,使用以下命令添加服务器

    incus remote add <remote_name> <token>
    

注意

如果您的 Incus 服务器位于 NAT 后面,则在将其作为远程客户端添加时,必须指定其外部公共地址

incus remote add <name> <IP_address>

在服务器上生成令牌时,Incus 会包含一个客户端可以使用它来访问服务器的 IP 地址列表。但是,如果服务器位于 NAT 后面,这些地址可能是客户端无法连接到的本地地址。在这种情况下,您必须手动指定外部地址。

有关详细信息和其他身份验证方法,请参见 远程 API 身份验证