【问题标题】:Dockerize user sessions [closed]Dockerize 用户会话 [关闭]
【发布时间】:2017-10-01 02:27:36
【问题描述】:

我正在寻找有关如何在 Linux 中对用户会话进行 dockerize 的帮助。我正在寻找的是,当有人 ssh 进入帐户并执行任何操作时,我将如何做到这一点,当他们退出时,他们所做的任何事情都不会被保存;下次别人 ssh 进入时我就是这样设置的。

这是一个 CTF 活动,我的任务是设置,但我对我必须做的大部分事情一无所知,整个过程对我来说是一次学习经历。

这里解释了我希望如何设置它的一个很好的解释:http://overthewire.org/help/sshinfra.html

【问题讨论】:

  • 那么您将与不同的人共享同一个用户,还是每个人都将成为不同的用户?
  • 每个用户在连接他们的 ssh 会话时都会获得自己的容器
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。

标签: linux docker ssh


【解决方案1】:

所以你可以通过为用户创建一个新的基于 docker 的 shell 来做到这一点

创建用户

首先我们使用下面的命令创建用户

sudo useradd --create-home --shell /usr/local/bin/dockershell tarun 
echo "tarun:tarunpass" | sudo chpasswd
sudo usermod -aG docker tarun

创建外壳

接下来创建一个shell文件/usr/local/bin/dockershell

#!/bin/bash

docker run -it --rm ubuntu:latest /bin/bash

然后是chmod +x /usr/local/bin/dockershell。现在你可以用新用户 ssh 到你的虚拟机了

$ ssh tarun@vm
tarun@vm's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-66-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.


Last login: Sun Oct  1 06:50:06 2017 from 192.168.33.1
Starting shell for tarun
root@79c12f002708:/#

这会将我带到 docker 容器,并且不会保存任何会话更改。如果你想更安全,你应该重新映射用户命名空间

https://success.docker.com/KBase/Introduction_to_User_Namespaces_in_Docker_Engine

【讨论】:

  • 谢谢,我今天会尝试测试一下,然后报告它是如何工作的!
  • 现在可以正常工作了!你的建议很有效。现在唯一的问题是创建用户时没有添加主目录,我需要将文件添加到主目录。
  • @Keith,您可以使用自定义图像执行此操作,并将其传递给应该存在的文件夹名称的环境。
  • 我看看我能不能解决这个问题。感谢您的帮助,我一直在尝试在我一直在使用的 Ubuntu 拉动上尽我所能。您提出的解决方案效果很好,我要做的就是尝试为用户/级别设置主文件夹。
【解决方案2】:

当他们退出时,他们所做的任何事情都不会被保存

这是因为容器的可写层在容器停止时被丢弃。

您应该确保您的容器使用bind mount 或(更好)a volume 运行:这样,在 ssh 期间完成的修改,如果在正确的(安装的)路径中完成,将持续存在。

【讨论】:

  • 我认为您误解了这个问题,他正在研究如何设置 SSH 到服务器,其中用户会话在 docker 容器中运行,并且不会保存会话的任何更改
  • “没有保存会话的更改”哪个会话? SSH 一个,还是 docker 容器一个?前者应该被保存,因为它在主机上。后者需要音量。
  • 预期是与主机的 SSH 会话将您带入 docker 容器而不是主机。并且不应保存 docker 容器更改。如果不映射卷,无论如何都不会。所以问题更多是关于如何设置服务器,以便用户的 SSH 可以直接发送到 docker 容器外壳而不是主机外壳
  • @TarunLalwani SSH 到容器?为什么不是更简单的 docker exec?
  • 基本上每个“级别”或用户主文件夹都会在他们登录到CTF级别时预先设置。因此他们必须解压缩文件或执行其他任务。当他们退出那个级别时,我希望它回到预设的状态。所以我猜他们的 docker session 并没有保存我相信这是我想说的
猜你喜欢
  • 1970-01-01
  • 2012-04-06
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多