泊坞窗:SSH访问直接进入容器

问题描述:

到现在为止,我们使用一些Linux用户:泊坞窗:SSH访问直接进入容器

  • system_foo @服务器
  • system_bar @服务器
  • ...

我们希望把系统用户进入码头集装箱。

  • Linux用户system_foo - >容器system_foo

服务器内部的变化不是问题,但远程系统使用这些用户给我们发送的数据。

我们需要让ssh [email protected]工作。远程系统无法更改。

如果每个linux操作系统只有一个系统(将端口22传递给容器),那么我将非常容易。但有几个。

我们如何才能从旧方案更改为码头集装箱,并保持服务ssh [email protected]在远程站点没有变化的情况下可用?

如果你不明白这个问题,请留下评论。谢谢。

+0

所以你想每个连接一个容器?你不能只配置'docker run'作为'etc/passwd'中的用户shell? – ZeissS 2014-09-11 10:59:00

+0

我有没有这是否正确?:您想创建一个虚拟机l艾克环境。这样每个用户都有自己的容器(VM),用户可以使用它来做任何想要的事情。 – beginer 2014-09-11 11:05:00

+0

@ZeissS是的,也许'/ etc/passwd'中的简单包装脚本就足够了。我需要调查端口转发和子协议sftp是否也在工作。谢谢你的回答。 – guettli 2014-09-11 11:29:35

让我们记住然而,在一个容器,其具有支持SSH是典型的反模式(除非它是你的容器只“关心”,但随后会是什么能够点ssh英寸请参考http://techblog.constantcontact.com/devops/a-tale-of-three-docker-anti-patterns/有关反模式的信息

+0

是的,这是一种反模式。这就是为什么我们不会在我们的案例中使用docker。 – guettli 2016-01-15 14:43:46

根据评论判断,您可能正在寻找像dockersh这样的解决方案。 dockersh用作登录外壳,并允许您将每个登录到实例的用户放置到一个隔离的容器中。

虽然这可能不会让你使用sftp

注意dockersh包括在其自述的安全警告,你一定要检讨:

警告:虽然这个项目试图让用户 已经降低权限容器内,滴功能限制用户能力 来提升他们的特权等级,这并不一定是完全安全的。值得注意的是,当Docker添加用户名称空间支持时,可以使用 来进一步锁定权限。

几个月前,我帮助过我这样。这不是很好,但工程。但需要使用 pub-key auth。

脚本获取.ssh/authorized_keys

#!/usr/bin/python 
import os 
import sys 
import subprocess 
cmd=['ssh', '[email protected]:2222'] 
if not 'SSH_ORIGINAL_COMMAND' in os.environ: 
    cmd.extend(sys.argv[1:]) 
else: 
    cmd.append(os.environ['SSH_ORIGINAL_COMMAND']) 
sys.exit(subprocess.call(cmd)) 

文件system_foo @服务器通过command叫:的.ssh/authorized_keys中

command="/home/modwork/bin/ssh-wrapper.py" ssh-rsa AAAAB3NzaC1yc2EAAAAB... 

如果远程系统不ssh [email protected]的SSH守护在server执行COMAND在.ssh/authorized_keys中给出。这个命令对不同的ssh守护进程执行ssh。

在泊坞窗容器,需要有运行ssh守护程序监听端口2222

+1

看来SSH和docker不应该一起使用:http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/ – tbz 2014-09-11 14:41:16

+2

@tbz:http://meyerweb.com/eric/评论/ chech.html – naught101 2015-04-27 01:40:28

nsenter可以为你工作。首先将ssh发送给主机,然后将nsenter发送到容器。

PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)` 
nsenter --target $PID --mount --uts --ipc --net --pid 

http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/