728x90

오늘은 Docker Container을 SSH로 접속해서 사용할 수 있는 방법에 대해 알려드리려고 합니다. 각자의 포트를 통해 컨테이너에 따로 접속해서 서로 영향을 미치지 않고 사용할 수 있게 됩니다.

Dockerfile 작성하기


FROM python:3.12

RUN apt-get update && apt-get upgrade -y && apt-get install -y vim openssh-server net-tools

가장 최소한으로 작성하였습니다. SSH 접속을 할 때, Dockerfile은 크게 고려하지 않으셔도 됩니다. Container를 실행할 때 포트포워딩이 핵심입니다.

 

이미지 빌드하기


docker build -t ssh_image .

 

Container 실행하기


# docker run -idt -p 원하는포트:22 --name=my_ssh ssh_image
docker run -idt -p 8888:22 --name=my_ssh ssh_image

저는 8888 포트를 이용해 ssh에 접속을 할 것입니다.

이 코드를 통해 외부에서 8888포트로 들어오는 것을 컨테이너의 22번 포트로 들어오게 합니다. 이때 ssh의 기본포트는 22이므로 22로 설정했습니다.

 

Container 접속하기 및 라이브러리 설치


# Container 접속
docker exec -it my_ssh /bin/bash

컨테이너에 접속해서 root의 비밀번호를 설정합니다.

 

# 라이브러리 설치
apt-get update && apt-get upgrade -y && apt-get install -y vim openssh-server net-tools

혹시 다른 이미지를 빌드하신 분은 다음 코드를 입력해서 필요한 라이브러리를 설치합니다.

 

비밀번호 설정


# vi editor을 이용해 RootLogin을 설정합니다.
vi /etc/ssh/sshd_config

#PermitRootLogin prohibit-password를 다음과 같이 변경합니다.

그리고 :wq 입력해서 저장하고 나옵니다.

# 비밀번호 설정
passwd

passwd입력 후 비밀번호를 2번 입력합니다.

 

SSH service 켜기


service ssh start

service ssh status

netstat -ntl

다음과 같이 코드를 3개를 입력하고 출력이 된다면 성공입니다.

현재 22번 포트에 대해 입력을 받는 것을 확인할 수 있습니다.

 

SSH 접속하기


# ssh root@ip주소 -p 포트번호
ssh root@127.0.0.1 -p 8888
-> 비밀번호 입력

다음과 같이 ip주소를 입력하고 포트번호를 입력하고 비밀번호를 입력하면 ssh로 접속이 가능하게 됩니다.