2014-09-11 3 views
4

에 SSH 액세스 최대 이제 우리는 여러 리눅스 사용자를 사용고정 표시기 : 직접 용기

  • system_foo의 @ 서버
  • system_bar의 @ 서버
  • ...

우리는 데려 가고 싶다는 도커 컨테이너에 시스템 사용자.

  • 리눅스 사용자 system_foo -> 컨테이너 system_foo

서버 내부의 변화는 문제가되지 않습니다 만, 원격 시스템은 우리에게 데이터를 전송하는 이러한 사용자를 사용합니다.

ssh [email protected]을 작성해야합니다. 원격 시스템은 변경할 수 없습니다.

리눅스 운영 체제 당 하나의 시스템 만 있으면 매우 편리합니다 (컨테이너에 포트 22를 전달하십시오). 그러나 몇 가지가 있습니다.

이전 스키마에서 고정 컨테이너로 변경하고 ssh [email protected] 서비스를 원격 사이트에서 변경하지 않고 사용하려면 어떻게해야합니까?

질문을 이해할 수 없다면 의견을 남기십시오. 고맙습니다.

+0

그래서 연결 당 하나의 컨테이너가 필요합니까? '도커 실행'을'etc/passwd'의 사용자 쉘로 구성 할 수는 없습니까? – ZeissS

+0

이 맞습니까? : 가상 컴퓨터를 만들려고합니다. l ike 환경. 그래서 각 사용자는 자신의 컨테이너 (VM)를 가지고 있으며 사용자는 자신의 컨테이너 (ssh)를 사용하여 원하는 것을 수행 할 수 있습니다. – beginer

+0

@ZeissS 예,'/ etc/passwd'에 간단한 래퍼 스크립트 만 있으면 충분합니다. 포트 포워딩과 서브 프로토콜 sftp가 제대로 작동하는지 조사 할 필요가 있습니다. 이 "답변"을 가져 주셔서 감사합니다. – guettli

답변

4

은 당신의 용기는 '관심'이다 그러나 무엇 수있는의 포인트가 될하지 않는 한 이제 (용기에 SSH 지원을 가진 것은 안티 패턴은 일반적으로 단 것을 기억합시다 그 반 패턴에 대한 정보는 http://techblog.constantcontact.com/devops/a-tale-of-three-docker-anti-patterns/을 참조하십시오

+0

예, 반 패턴입니다. 그래서 우리는 우리의 경우에 도커를 사용하지 않을 것입니다. – guettli

1

의견에 따라 판단 할 때 dockersh과 같은 해결책을 찾고있을 수 있습니다. dockersh은 로그인 셸로 사용되며 인스턴스에 로그인 한 모든 사용자를 격리 된 컨테이너에 배치 할 수 있습니다.

이것은 아마도 sftp을 사용할 수 없게합니다.

dockersh 당신은 확실히 검토 할 수 있습니다 자신의 README에서 보안 경고, 포함

참고 :

경고 :이 프로젝트가 권한을 낮춘 용기 내부 사용자를 만들기 위해 시도하는 동안을 사용자를 제한하는 기능을 삭제 능력 권한 레벨을 상승 시키려면 완전히 보안이 확실하지 않습니다. 특히 Docker가 사용자 네임 스페이스를 지원하면 추가 권한을 잠그는 데 사용되는 이 될 수 있습니다.

1

몇 달 전, 나는 이것을 좋아했습니다. 그것은 좋지 않지만 작동합니다. 하지만 공개 키 인증을 사용해야합니다. .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를 통해 호출되는

스크립트 : 스푸핑/authorized_keys에이

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

원격 시스템이 ssh [email protected] 않는 경우 server에서 SSH-데몬은 COMAND을 실행 .ssh/authorized_keys에 주어진다. 이 명령은 ssh를 다른 ssh-daemon으로합니다.고정 표시기 컨테이너에서

는 당신을 위해 일할 수있는 포트 2222

+1

SSH와 도커를 함께 사용하면 안됩니다 : http://jpetazzazzo.github.io/2014/06/23/docker-ssh-considered-evil/ – tbz

+2

@tbz : http://meyerweb.com/eric/ comment/chech.html – naught101