在服务器使用podman创建/新建容器,进入容器中,成功安装 openssh-server 和 openssh-sftp-server,然后执行以下命令并查看状态:
# service ssh status ?* sshd is not running # service ssh start ?* Starting OpenBSD Secure Shell server sshd # service ssh status ?* sshd is not running? //实际并没有启动,其它PC也不能通过SSH连接容器
经过长时间排查,发现是创建容器时使用了命令选项"--network=host",如下所示:
podman run -d --network=host --privileged=true --name ContainerName ...
通过查阅资料了解到host模式直接使用宿主机的网络空间,该模式下无法使用-p命令选项映射端口,容器和宿主机直接共享端口(多次尝试其它PC通过SSH连接服务器容器均未成功,实际是否可以未知)。因此需将创建容器的命令修改为:
podman run -d -p 1234:22 --privileged=true --name ContainerName ...
# 1234 是指定的宿主机端口(无超级管理员权限时端口号不得小于1024)
# 22 是指定的容器中端口(对应/etc/ssh/sshd_config文件中配置的Port变量)
然后进入容器中,再次执行以下命令并查看状态:
# service ssh status ?* sshd is not running # service ssh start ?* Starting OpenBSD Secure Shell server sshd # service ssh status ?* sshd is?running? //正常
实测其它PC已可以通过 ssh -X -p 1234 username@server-ip?连接服务器运行中的容器。
Tips:
(1) 如果需求差不多的话可以共用一个容器,在容器中使用root账户进行管理(或者创建一个具有sudo权限的管理账户),然后创建多个低权限账户提供给相关用户使用。使用以下命令可查看支持的数量上限:
sysctl -a | grep user\.max_user_namespaces
(2) 如果需求不一致,可创建多个容器,每个容器映射不同的端口。这样用户就可以用不同的映射端口来访问不同的容器。
郑重提示:①本文不允许转载,若认可本文,可点赞收藏。
????????????????????? ②若有疑问,可在评论区留言相互讨论。
|