2016-10-07 3 views
0

예를 들어 데비안을 기반으로 한 도커 이미지를 만들 때 ssh 서비스를 설치하고 Dockerfile에 ssh 사용자 및 암호를 설정하려고합니다. 그것이 의미가있을 수 있지만 그것을 실행 한 후에 그것을하고 싶지 않다면. 당신의 도움을 주셔서 감사합니다! 도커 컨테이너 안팎에서의 상호 작용을 실현하는 방법

... 
 

 
RUN \ 
 
    apt-get update && \ 
 
    # install ssh service 
 
    apt-get install openssh-server -y && \ 
 
    mkdir -p /var/run/sshd && \ 
 
    useradd sshuser && \ 
 
    passwd sshuser && \ 
 

 
CMD ["/usr/sbin/sshd", "-D", "&"] 
 

 
...

+0

당신이하고 싶은 것을 설명해 주시겠습니까? sshd가 설치된 도커 이미지를 만들고 암호가 미리 정의되어 있습니까? – ffledgling

+0

@ffledgling 예, ** sshuser **를 사용할 수 있으며 컨테이너 외부에서 로그인 할 때 비밀번호가 필요합니다. – wizChen

답변

1

변경이로 고정 표시기 파일이 원래하려고 노력하고 정확하게 일을합니다.

... 

RUN \ 
    apt-get update && \ 
    # install ssh service 
    apt-get install openssh-server -y && \ 
    mkdir -p /var/run/sshd 
RUN useradd sshuser -m -p $(openssl passwd $PASS) 

CMD ["/usr/sbin/sshd", "-D", "&"] 

... 

생성하는 비밀번호는 도커 파일에 영원히 인코딩되어 있으며 누구나 볼 수 있습니다. 일반 텍스트 암호 대신 암호화 된 SHA를 제공 할 수는 있지만 여전히 좋은 생각은 아닙니다.

자세한 내용은 man useradd을 참조하십시오. 제안으로


은/옆의 고정 표시기 세계에서이 일을 더 좋은 방법은 모든 컨테이너 내부 sshd를 설치하지 않는 것입니다. 대신 다음을 사용하십시오 :

$ docker exec -i -t <name of the running container> -- /bin/bash 

이것은 컨테이너가 이미 실행 중이라고 가정합니다. Docker exec는 컨테이너에 액세스하기 위해 사용자 이름이나 비밀번호를 필요로하지 않습니다.

+0

예, 알고 있습니다. 그러나 나는 ssh 사용자의 계정까지 실행할 때 변수를 통해 ** sshuser ** 암호를 설정할 수 있습니다. – wizChen

+0

안녕하세요, 귀하의 제안을 시도하고 작동하지 않았다. 나는 실행 컨테이너에 들어가서 '' useradd test -m -p mypassword '' 을 사용하는 다른 사용자를 설정하고 작동하지 않는 것을 찾는다. – wizChen

+0

@wizChen 당신이하려는 일과 원하는 것에 대해 좀 더 분명히해야합니다. * 작동하지 않는다는 것을 의미합니까 *? 시도한 명령은 무엇이며 오류 메시지는 무엇입니까? 붙여 넣기/질문에 추가 할 수 있습니까? – ffledgling

관련 문제