2014-09-11 89 views
4

到現在爲止,我們使用一些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

回答

1

根據評論判斷,您可能正在尋找像dockersh這樣的解決方案。 dockersh用作登錄外殼,並允許您將每個登錄到實例的用戶放置到一個隔離的容器中。

雖然這可能不會讓你使用sftp

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

警告:雖然這個項目試圖讓用戶 已經降低權限容器內,滴功能限制用戶能力 來提升他們的特權等級,這並不一定是完全安全的。值得注意的是,當Docker添加用戶名稱空間支持時,可以使用 來進一步鎖定權限。

1

幾個月前,我幫助過我這樣。這不是很好,但工程。但需要使用 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