Linux docker:SSH直接访问容器
到目前为止,我们使用了几个linux用户:Linux docker:SSH直接访问容器,linux,ssh,virtualization,docker,Linux,Ssh,Virtualization,Docker,到目前为止,我们使用了几个linux用户: 系统_foo@server 系统_bar@server 我们希望将系统用户放入docker容器中 PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)` nsenter --target $PID --mount --uts --ipc --net --pid linux用户system\u-foo-->容器system\u-foo 服务器内部的
- 系统_foo@server
- 系统_bar@server
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)`
nsenter --target $PID --mount --uts --ipc --net --pid
- linux用户
-->容器system\u-foo
system\u-foo
ssh系统_foo@server
工作。远程系统无法更改
如果每个linux操作系统只有一个系统(将端口22传递给容器),我将非常容易。但是有几个
我们如何从旧的方案更改为docker容器并保持服务ssh系统_foo@server
在远程站点上无需更改即可使用
如果你不明白这个问题,请留下评论。谢谢。根据评论判断,您可能正在寻找类似的解决方案
dockersh
用作登录shell,允许您将登录到实例的每个用户放置到一个独立的容器中
不过,这可能不允许您使用sftp
请注意,dockersh
在其自述文件中包含安全警告,您一定要查看:
警告:当此项目试图使用户进入容器时
降低权限并删除功能以限制用户的权限
要提升他们的权限级别,不一定要完全升级
保护值得注意的是,当Docker添加了用户名称空间支持时,这可以是
用于进一步锁定特权
几个月前,我这样帮助我的朋友。这不好,但很管用。但是 需要使用发布密钥身份验证 通过
.ssh/authorized_key
中的命令调用的脚本
#!/usr/bin/python
import os
import sys
import subprocess
cmd=['ssh', 'user@localhost: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))
文件系统_foo@server:.ssh/authorized_密钥
command="/home/modwork/bin/ssh-wrapper.py" ssh-rsa AAAAB3NzaC1yc2EAAAAB...
如果远程系统没有ssh系统_foo@server
服务器上的SSH守护进程执行中给出的comand命令。此命令对不同的ssh守护进程执行ssh
在docker容器中,需要运行侦听端口2222的ssh守护程序。nsenter可能适合您。首先ssh到主机,然后nsenter到容器
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)`
nsenter --target $PID --mount --uts --ipc --net --pid
PID=$(docker inspect--format{{{.State.PID})`
nsenter--target$PID--mount--uts--ipc--net--PID
source但是,让我们记住,在容器中支持ssh通常是一种反模式(除非这只是您的容器的“问题”,但是能够ssh进入有什么意义。请参阅以了解有关反模式的信息,因此您希望每个连接使用一个容器?您不能在用户在etc/passwd
中shell时配置docker run
?我的回答正确吗?:您想创建一个虚拟Mac吗hine-like环境。这样每个用户都有自己的容器(VM),用户可以通过ssh进入其中并做任何想做的事情。@ZeissS是的,也许在/etc/passwd
中使用一个简单的包装器脚本就足够了。我需要调查端口转发和子策略sftp是否也起作用。谢谢您的“回答”@beginer是的,ssh到帐户在我们内部更改之前是允许的,在我们内部更改之后应该是允许的。看来ssh和docker不应该一起使用:是的,这是一种反模式。这就是为什么我们在本例中不使用docker的原因。