2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 容器中启动ssh状态总是sshd is not running

容器中启动ssh状态总是sshd is not running

时间:2022-01-10 04:55:03

相关推荐

容器中启动ssh状态总是sshd is not running

在服务器使用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 ps命令查看端口映射关系)。因此需将创建容器的命令修改为:

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 isrunning //正常

实测其它PC已可以通过 ssh -X -p 1234username@server-ip连接服务器运行中的容器。

Tips:

(1) 如果需求差不多的话可以共用一个容器,在容器中使用root账户进行管理(或者创建一个具有sudo权限的管理账户),然后创建多个低权限账户提供给相关用户使用。使用以下命令可查看支持的数量上限:

sysctl -a | grep user\.max_user_namespaces

(2) 如果需求不一致,可创建多个容器,每个容器映射不同的端口。这样用户就可以用不同的映射端口来访问不同的容器。

郑重提示:①本文不允许转载,若认可本文,可点赞收藏。

②若有疑问,可在评论区留言相互讨论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。