泊坞窗:SSH访问直接进入容器
到现在为止,我们使用一些Linux用户:泊坞窗:SSH访问直接进入容器
- system_foo @服务器
- system_bar @服务器
- ...
我们希望把系统用户进入码头集装箱。
- Linux用户
system_foo
- >容器system_foo
服务器内部的变化不是问题,但远程系统使用这些用户给我们发送的数据。
我们需要让ssh [email protected]
工作。远程系统无法更改。
如果每个linux操作系统只有一个系统(将端口22传递给容器),那么我将非常容易。但有几个。
我们如何才能从旧方案更改为码头集装箱,并保持服务ssh [email protected]
在远程站点没有变化的情况下可用?
如果你不明白这个问题,请留下评论。谢谢。
让我们记住然而,在一个容器,其具有支持SSH是典型的反模式(除非它是你的容器只“关心”,但随后会是什么能够点ssh英寸请参考http://techblog.constantcontact.com/devops/a-tale-of-three-docker-anti-patterns/有关反模式的信息
是的,这是一种反模式。这就是为什么我们不会在我们的案例中使用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
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/
所以你想每个连接一个容器?你不能只配置'docker run'作为'etc/passwd'中的用户shell? – ZeissS 2014-09-11 10:59:00
我有没有这是否正确?:您想创建一个虚拟机l艾克环境。这样每个用户都有自己的容器(VM),用户可以使用它来做任何想要的事情。 – beginer 2014-09-11 11:05:00
@ZeissS是的,也许'/ etc/passwd'中的简单包装脚本就足够了。我需要调查端口转发和子协议sftp是否也在工作。谢谢你的回答。 – guettli 2014-09-11 11:29:35