⚠️

아래 내용은 컨테이너에 root 계정의 비밀번호를 간단히 설정하여 ssh 방식으로 접속하는 방법이다. **(보안을 위해 별도의 계정 추가와 공개키 인증 방식 등을 권장)

또한 컨테이너의 IP 를 통해서 접속하는게 아닌** “localhost“를 통해서 접속하는 방법이다. (컨테이너의 IP로 ssh 접속을 할 수 없는 이유는 다른 글에서 다룰 예정)


1. Ubuntu 컨테이너 실행 (+ SSH 설치)

먼저 Ubuntu 컨테이너를 실행하면서 bash로 진입

docker run -it --name {컨테이너 이름} -p 2222:22 ubuntu:latest bash
  • p 2222:22: 로컬 포트 2222를 컨테이너의 22번(SHH)포트로 포트포워딩

2. 컨테이너 내부에서 SSH 서버 설치 및 설정

컨테이너 내부에서 아래 명령어로 SSH 서버(ssh-server) 및 기타 유틸 설치

apt update
apt install -y openssh-server

SSH 설정을 약간 변경하고 root 비밀번호 설정

echo "root:DockerPass123" | chpasswd   # root 비밀번호 설정

# SSH 설정파일에서 root 로그인 금지 → 허용으로 바꿔주는 설정
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
service ssh start   # SSH 서버 구동

3. 로컬에서 컨테이너로 SSH 접속

컨테이너에서 나와(새 터미널에서), 로컬에서 아래와 같이 SSH 접속 테스트

ssh root@localhost -p 2222
  • 비밀번호: DockerPass123

4. 기타 참고사항

  • 만약 “컨테이너를 띄울 때마다 sshd를 실행"하고 싶다면 CMD ["usr/sbin/sshd", "-D"] 등을 Dockerfile에 명시
# Dockerfile 예시
FROM ubuntu:latest
RUN apt update && apt install -y openssh-server
RUN echo "root:DockerPass123" | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
CMD ["/usr/sbin/sshd", "-D"]
  • 공식 Ubuntu 이미지 대신 ssh가 이미 내장된 이미지를 쓸 수도 있다.