Docker

Dockerfile에 ssh 세팅

Superkill 2017. 8. 19. 20:14
반응형

Dockerize an SSH service

https://docs.docker.com/engine/examples/running_ssh_service/



FROM ubuntu:16.04
# ubuntu:16.04 도커 이미지를 base로 설정
RUN apt-get update && apt-get install -y openssh-server
# apt-get update로 기존설치된 패키지들의 업데이트 버전이 있을 경우 업데이트
# openssh-server 설치 (-y 옵션은 프롬프트에 자동으로 yes라고 응답해줌)
RUN mkdir /var/run/sshd
# /var/run/sshd 디렉토리 생성
RUN echo 'root:screencast' | chpasswd
# 파이프라인(|) 왼쪽의 표준 출력이 오른쪽의 표준 입력으로 처리됨
# root의 password를 screencast로 변경

RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# openssh 7.0버전 부터 PermitRootLogin 옵션이 'prohibit-password'를 인자로 받아들인다. (without-password 와 살짝 비슷)
# sed -i 옵션은 타겟 파일에서 문자열을 검색한 후 변경한다.
# sshd_config 파일에서 PermitRootLogin prohibit-password를 PermitRootLogin yes 로 변경
# pw 없이 접속 가능하던 것을 root 계정으로 로그인 하도록 변경
# https://www.openssh.com/txt/release-7.0
# permitrootlogin : http://manpages.ubuntu.com/manpages/trusty/en/man5/sshd_config.5.html
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
# s/대신 s@로 표현되었다(s 는 substitue를 뜻함)
# / 대신 백슬래쉬와 개행문자를 제외한 어느 것도 delimiter로 사용가능하다. 문자 같은 경우는 백슬래쉬 앞에 함게 써야 함
# delimiter 안쪽의 문자열들은 Regex 표현식이 사용됨
# http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
#'session required pam_loginuid.so' 문자열을
#'session optional pam_loginuid.so' 문자열로 교체
# 표현식 내부의 \s는 공백을 의미
# *는 반복을 의미, \s*는 공백이 0번이상 반복
# pam ( Pluggable Authentication Modules)
ENV NOTVISIBLE "in users profile"
# 환경변수 설정, NOTVISIBLE이란 환경변수를 무슨 용도로 쓰는지는 불명
# 어쩌면 그냥 환경변수 설정 예를 보여주는데 그 값이 user profile에 저장된다는 의미인걸까..
# 

RUN echo "export VISIBLE=now" >> /etc/profile # /etc/profile 파일은 user shell에 시스템 전역 환경변수를 설정하는데 사용된다. # >>, 파일 뒷부분에 내용 추가

EXPOSE 22
# 호스트와 연결할 포트번호
CMD ["/usr/sbin/sshd", "-D"]
# demon으로 sshd 실행


'Docker' 카테고리의 다른 글

docker redis 커스텀 설정  (0) 2018.05.04
Alpine Linux를 Docker Host로 사용하기  (0) 2018.04.16
Docker) bash.exe 파일을 찾는 중입니다  (2) 2017.08.19
/bin/sh: 1: Syntax error: "(" unexpected  (0) 2017.08.19
docker attach vs exec  (3) 2017.01.04