[도커]Missing privilege separation directory: /run/sshd

임하·2025년 3월 16일

트러블슈팅

목록 보기
3/4

Missing privilege separation directory: /run/sshd 에러 트러블 슈팅

halim@raspberrypi:~/Jenkins/ubuntu $ cat Dockerfile
FROM ubuntu:latest

# openssh-server 설치
RUN apt-get update && apt-get install -y openssh-server

#SSH 실행을 위한 디렉토리 생성. 없으면 컨테이너가 시작하자마자 죽음
RUN mkdir -p /run/sshd

# sshd_config 설정
# ubuntu_user 계정 생성 및 비밀번호 설정
# 1234 비밀번호 설정 (ubuntu_user 계정)
# ubuntu_user 계정의 .ssh 디렉토리 생성 및 권한 설정
RUN useradd -m ubuntu_user && \
    echo "ubuntu_user:1234" | chpasswd && \
    mkdir /home/ubuntu_user/.ssh && \
    chmod 700 /home/ubuntu_user/.ssh

# 생성된 ubuntu_user 계정의 공개키를 authorized_keys 파일로 복사
# authorized_keys 파일은 sshd 서버가 클라이언트의 공개키를 비교하여 인증하는데 사용
COPY ssh-key /home/ubuntu_user/.ssh/authorized_keys

# ubuntu_user 계정의 디렉토리 및 파일 소유자를 ubuntu_user로 변경
# authorized_keys 파일 권한 설정
RUN chown ubuntu_user:ubuntu_user -R /home/ubuntu_user/.ssh && \
    chmod 600 /home/ubuntu_user/.ssh/authorized_keys

# ssh 서비스 시작
# -D 옵션은 sshd 서버가 foreground 모드로 실행되도록 함 (백그라운드 실행 X)
# -D 옵션을 사용하지 않으면 sshd 서버가 백그라운드로 실행되어 컨테이너가 종료됨
CMD ["/usr/sbin/sshd", "-D"

해당 코드로 도커 이미지 만들 시 컨테이너가 바로 죽는다. 로그를 보면
Missing privilege separation directory: /run/sshd
가 반복해서 나타나있는 것을 볼 수 있다.

일단 마지막 CMD를

CMD ["service", "ssh", "start", "-D"]

로 수정한 뒤에 캐시를 삭제하고 새롭게 docker compose를 실행해보았다.

성공

0개의 댓글