簡體   English   中英

docker:SSH直接訪問容器

[英]docker: SSH access directly into container

到目前為止,我們使用了幾個linux用戶:

  • system_foo @服務器
  • system_bar @服務器
  • ...

我們希望將系統用戶放入docker容器中。

  • linux user system_foo - > container system_foo

服務器內部的更改沒有問題,但遠程系統使用這些用戶向我們發送數據。

我們需要使ssh system_foo@server工作。 遠程系統無法更改。

如果每個linux操作系統只有一個系統(將端口22傳遞給容器),我會很容易的。 但有幾個。

我們如何從舊方案更改為docker容器並保持服務ssh system_foo@server可用而無需在遠程站點進行更改?

如果您不理解這個問題,請發表評論。 謝謝。

但是請記住,在容器中使用ssh支持通常是一種反模式(除非它只是你的容器'關注',但那么能夠ssh的重點是什么。請參閱http://techblog.constantcontact.com / devops / a-tale-of-three-docker-anti-patterns /有關該反模式的信息

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/

從評論來看,您可能正在尋找像dockersh這樣的解決方案。 dockersh用作登錄shell,並允許您將登錄到您的實例的每個用戶放入一個隔離的容器中。

這可能不會讓你使用sftp

請注意, dockersh在其README中包含安全警告,您肯定希望查看這些警告:

警告:雖然此項目試圖使容器內的用戶降低權限並降低功能以限制用戶升級其權限級別的能力,但不確定是否完全安全。 值得注意的是,當Docker添加用戶命名空間支持時,可以使用它來進一步鎖定權限。

幾個月前,我幫這樣做了。 這不好,但有效。 但需要使用pub-key auth。

.ssh/authorized_keys通過command調用的腳本

#!/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))

file system_foo @ server:.ssh / authorized_keys

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

如果遠程系統確實ssh system_foo@server的SSH守護程序在server執行中給出的COMAND .ssh/authorized_keys 此命令對不同的ssh-daemon執行ssh。

在docker容器中,需要運行偵聽端口2222的ssh-daemon。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM