远程访问
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
连接。
如果您尚未添加远程 podman 连接,可以遵循 Podman 官方指南或按照以下步骤操作。
- 生成本地 ed25519 密钥
$ ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
- 将您的公钥 ed25519 复制到服务器
您的 SSH 公钥需要被复制到 Linux 服务器上的 ~/.ssh/authorized_keys
文件中。
- Windows
- Linux 和 MacOS
$ type ~\.ssh\id_ed25519.pub | ssh user@my-server-ip "cat >> .ssh/authorized_keys"
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub user@my-server-ip
- 在远程连接上启用 Podman 套接字 (socket)
默认情况下,在 Podman 安装中,podman.socket 是禁用的。启用 systemd 套接字允许远程客户端控制 Podman。
$ systemctl enable podman.socket
$ systemctl start podman.socket
通过检查状态来确认套接字是否已启用
$ systemctl status --user podman.socket
- 将连接添加到
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)使用绝对路径;带 ~ 的路径将无法解析。
- 在 Podman Desktop 的容器 (Containers) 部分中检查您现在是否可以访问您的远程实例。
验证
GUI 验证
- 在远程机器上运行一个 helloworld 容器
$ ssh user@my-server-ip podman run -d quay.io/podman/hello
- 在 Podman Desktop 中,检查您的容器是否出现在容器 (Containers) 部分。
CLI 验证
- 将您的远程连接设置为默认连接
$ podman system connection default my-remote-machine
- 验证容器是否出现在 CLI 中
$ podman ps
您也可以使用 --connection
参数来只针对您想要的连接,例如,podman --connection=my-remote-machine ps
。