Dockerize用户会话

时间:2017-10-01 02:27:36

标签: linux docker ssh

我正在寻找有关如何在Linux中对用户会话进行docker化的帮助。我正在寻找的是如果有人ssh进入一个帐户并做任何事情,当他们退出任何他们所做的事情并没有得到保存时,我该如何做到这一点;这是我下次其他人加入它时的设置。

对于CTF活动而言,我一直负责设置并且对我所做的大部分事情一无所知这一整个过程对我来说都是一次学习经历。

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

2 个答案:

答案 0 :(得分:0)

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

创建用户

首先,我们使用以下命令

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

创建shell

接下来创建一个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

答案 1 :(得分:-1)

  

当他们退出任何他们所做的事情时都没有保存

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

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

https://docs.docker.com/engine/admin/volumes/images/types-of-mounts-volume.png