跳转到主内容

远程访问

Podman Desktop 可以管理远程 Podman 连接。这是通过使用 podman system connection ls 命令列出的连接列表来实现的。

容器可以像在本地管理一样被创建、启动、停止和删除。

此功能通过 SSH 连接到远程主机上的 Podman 套接字 (socket) 来实现。

远程访问需要 ed25519 密钥、一个 SSH 连接和一个已启用的 Podman Socket

不支持 RSA 密钥;ed25519 密钥是目前推荐且唯一用于设置远程连接的方法。

先决条件

  • 对已安装 Podman 的 Linux 机器的 SSH 访问权限

步骤

通过启用设置,Podman Desktop 将在图形用户界面 (GUI) 中自动检测并显示任何 podman system connection ls 连接。

Enable the remote setting

如果您尚未添加远程 podman 连接,可以遵循 Podman 官方指南或按照以下步骤操作。

  1. 生成本地 ed25519 密钥
$ ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
  1. 将您的公钥 ed25519 复制到服务器

您的 SSH 公钥需要被复制到 Linux 服务器上的 ~/.ssh/authorized_keys 文件中。

$ type ~\.ssh\id_ed25519.pub | ssh user@my-server-ip "cat >> .ssh/authorized_keys"
  1. 在远程连接上启用 Podman 套接字 (socket)

默认情况下,在 Podman 安装中,podman.socket 是禁用的。启用 systemd 套接字允许远程客户端控制 Podman。

$ systemctl enable podman.socket
$ systemctl start podman.socket

通过检查状态来确认套接字是否已启用

$ systemctl status --user podman.socket
  1. 将连接添加到 podman system connection ls

了解您正在使用哪个套接字路径非常重要,因为普通用户和 root 用户的路径有所不同。

使用 podman info 来确定正确的套接字路径

$ ssh user@my-server-ip podman info | grep sock
path: /run/user/1000/podman/podman.sock

如果您正在使用 root,它可能会显示为

$ ssh root@my-server-ip podman info | grep sock
path: /run/podman/podman.sock

现在您可以添加连接了。用一个独特的名称将其添加到 Podman 系统连接列表中。

# non-root
$ podman system connection add my-remote-machine --identity ~/.ssh/id_ed25519 ssh://myuser@my-server-ip/run/user/1000/podman/podman.sock

# root
$ podman system connection add my-remote-machine --identity ~/.ssh/id_ed25519 ssh://root@my-server-ip/run/podman/podman.sock
警告

在 Windows 上,您需要为身份(identities)使用绝对路径;带 ~ 的路径将无法解析。

  1. 在 Podman Desktop 的容器 (Containers) 部分中检查您现在是否可以访问您的远程实例。

验证

GUI 验证

  1. 在远程机器上运行一个 helloworld 容器
$ ssh user@my-server-ip podman run -d quay.io/podman/hello
  1. 在 Podman Desktop 中,检查您的容器是否出现在容器 (Containers) 部分。

CLI 验证

  1. 将您的远程连接设置为默认连接
$ podman system connection default my-remote-machine
  1. 验证容器是否出现在 CLI 中
$ podman ps
注意

您也可以使用 --connection 参数来只针对您想要的连接,例如,podman --connection=my-remote-machine ps

其他资源