如何为Podman容器配置SSH认证?权限控制及exec命令可用性咨询
解决方案
1. 可以在容器内配置SSH并创建专属用户限制访问
完全可以通过以下步骤实现:
进入容器创建专属用户
先通过podman exec进入容器,创建一个专属用户(比如叫container_user):podman exec -it your_container_name bash useradd -m container_user passwd container_user # 设置密码,或者后续用密钥认证安装并配置SSH服务
在容器内安装OpenSSH服务器(Debian/Ubuntu用以下命令,RHEL/CentOS替换为yum install openssh-server):apt update && apt install -y openssh-server修改SSH配置文件
/etc/ssh/sshd_config,收紧访问权限:# 禁用root登录 PermitRootLogin no # 仅允许专属用户访问 AllowUsers container_user # 禁用密码登录(可选,密钥认证更安全) PasswordAuthentication no配置SSH密钥认证(推荐)
在宿主机生成密钥对(一路回车即可),再将公钥复制到容器内用户的授权列表:# 宿主机生成密钥 ssh-keygen -t ed25519 # 复制公钥到容器 podman cp ~/.ssh/id_ed25519.pub your_container_name:/home/container_user/.ssh/authorized_keys # 修正权限(SSH对文件权限要求严格) podman exec your_container_name bash -c "chown container_user:container_user /home/container_user/.ssh/authorized_keys && chmod 600 /home/container_user/.ssh/authorized_keys && chmod 700 /home/container_user/.ssh"启动SSH服务并配置端口映射
在容器内启动SSH服务:service ssh start如果需要从宿主机外部访问,要映射容器SSH端口(比如宿主机2222端口映射到容器22端口)。若容器已运行,先提交为新镜像再重启:
# 停止容器 podman stop your_container_name # 提交为带SSH的新镜像 podman commit your_container_name your_ssh_image # 重启容器并映射端口 podman run -d -p 2222:22 --name your_container_name your_ssh_image
完成后,只有持有对应私钥的container_user能通过SSH访问容器,服务器上其他用户无权限登录。
2. 配置SSH认证后仍可使用podman exec访问容器
是的,完全可以继续使用podman exec命令。podman exec是直接通过Podman的容器运行时(runc/crun)进入容器,和容器内的SSH服务相互独立。只要你在宿主机上拥有该容器的操作权限(比如是创建容器的用户,或具备sudo权限),就能正常执行podman exec进入容器,不受容器内SSH配置的限制。
内容的提问来源于stack exchange,提问作者Divya Naidu
相关产品推荐
相关产品推荐

