跳到主要内容

通过SSH进入虚拟机

概述

podman machine ssh 命令允许用户通过SSH进入由Podman管理的虚拟机,并可选地在虚拟机上执行命令。如果未指定虚拟机名称,则默认进入名为 podman-machine-default 的虚拟机。该命令仅适用于rootless模式下的Podman。

通过SSH进入虚拟机,用户可以在虚拟机内部执行各种操作,如查看系统状态、运行容器等。这对于需要访问虚拟机内部环境的用户来说非常有用。

语法

podman machine ssh [选项][*虚拟机名称*] [命令 [参数 ...]]

选项

--help

显示帮助信息。

--username=用户名

指定SSH进入虚拟机时使用的用户名。

示例

获取与默认Podman机器的交互式会话

podman machine ssh

此命令将启动一个与默认Podman虚拟机的交互式SSH会话,允许用户在虚拟机内部执行命令。

在默认Podman机器上通过SSH运行命令

podman machine ssh 'rpm -q podman'

此命令将在默认Podman虚拟机上通过SSH运行 rpm -q podman 命令,以查询Podman的安装情况。

在指定Podman机器上通过SSH运行命令

podman machine ssh myvm 'ls /var/lib/containers'

此命令将在名为 myvm 的Podman虚拟机上通过SSH运行 ls /var/lib/containers 命令,以列出容器存储目录的内容。

退出码

podman machine ssh 命令的退出码反映了SSH会话的成功与否以及执行的命令的退出状态。如果SSH会话成功建立且命令执行成功,则退出码为0。如果SSH会话无法建立或命令执行失败,则退出码为非零值。具体的退出码取决于SSH命令和执行的命令的返回状态。

Exit Codes

podman machine set 命令的退出码提供了关于命令为何失败的信息。当 podman machine set 命令以非零码退出时,退出码遵循通用的 Unix/Linux 约定,具体如下:

0 - 命令成功执行。

非零值 - 命令执行出错。具体的非零退出码可能因错误类型的不同而有所不同,但通常遵循以下约定:

  • 1-124 - 保留给 shell 脚本内部使用或特定于应用程序的错误代码。
  • 125 - 用户指定的 shell 命令不存在。
  • 126 - 用户指定的命令不可执行。这通常是因为命令文件没有执行权限。
  • 127 - 命令未找到。这通常意味着 shell 无法在环境变量 PATH 指定的目录中找到该命令。
  • 128+ - 退出码为 128 加信号数,表示命令因接收到信号而退出。例如,如果命令因接收到 SIGINT(通常由用户按下 Ctrl+C 产生)而退出,则退出码为 130(128 + 2)。

podman machine set 的上下文中,尽管退出码的具体含义可能因 Podman 的版本或具体实现而异,但通常:

  • 如果命令成功执行并应用了设置,则退出码为 0。
  • 如果命令因参数无效、配置错误或其他原因而失败,则退出码为非零值。

要获取更详细的错误信息,可以使用 --debug-D 选项来运行 podman machine set 命令,这将输出额外的调试信息,有助于诊断问题。

另请参阅

历史

该文档最初由 Ashley Cui 于2021年3月整理,并随后根据Podman的发展进行了更新和完善。

请注意,随着Podman的不断发展和更新,命令和选项可能会有所变化。因此,建议查阅最新的Podman官方文档以获取最准确和最新的信息。