Docker 컨테이너에 SSH 접근 설정 방법

DockerBeginner
지금 연습하기

소개

Docker 는 컨테이너화된 애플리케이션을 구축, 배포 및 관리하는 인기 있는 플랫폼이 되었습니다. 그러나 때때로 Docker 컨테이너에 원격으로 접근해야 할 필요가 있으며, 이때 SSH(Secure Shell) 접근이 중요해집니다. 이 튜토리얼에서는 Docker 컨테이너에 대한 SSH 접근을 구성하는 과정을 안내하여 컨테이너화된 애플리케이션에 안전하게 연결하고 관리할 수 있도록 지원합니다.

Docker 용 SSH 접근 소개

Docker 는 개발자가 일관되고 격리된 환경에서 애플리케이션을 패키징하고 배포할 수 있도록 하는 인기 있는 컨테이너화 플랫폼입니다. Docker 컨테이너는 독립적이고 일시적인 특성으로 설계되었지만, 컨테이너의 쉘에 접근하거나 컨테이너 내부 문제를 해결해야 하는 경우가 있습니다. 이때 SSH(Secure Shell) 접근이 유용합니다.

SSH 는 원격 시스템에 연결하여 명령어를 실행하고 파일을 전송하며 다양한 관리 작업을 수행할 수 있는 안전한 프로토콜입니다. Docker 컨테이너에 SSH 접근을 활성화하면 컨테이너의 쉘에 직접 접근할 수 있으므로 디버깅, 모니터링 또는 고급 구성 작업에 도움이 됩니다.

이 튜토리얼에서는 Docker 컨테이너에 SSH 접근을 구성하는 단계를 살펴보고 안전하고 효율적으로 연결할 수 있도록 합니다.

graph TD A[Docker 호스트] -- SSH 연결 --> B[Docker 컨테이너] B[Docker 컨테이너] -- SSH 접근 --> C[컨테이너 쉘]

표 1: Docker 컨테이너에서 SSH 접근 활성화의 이점

이점 설명
원격 접근 컨테이너의 쉘에 원격으로 접근하여 문제 해결 및 고급 구성 작업을 수행할 수 있도록 합니다.
디버깅 컨테이너 환경에 직접 접근하여 컨테이너 내부 문제를 디버깅하는 데 도움이 됩니다.
모니터링 컨테이너의 프로세스와 리소스를 모니터링하고 관리할 수 있도록 합니다.
고급 구성 컨테이너의 기본 인터페이스를 통해 수행할 수 없는 고급 구성 작업을 수행할 수 있도록 합니다.

Docker 컨테이너에서 SSH 접근 활성화

Docker 컨테이너에서 SSH 접근을 활성화하려면 다음 단계를 따르세요.

컨테이너 내 SSH 서버 설치

먼저 컨테이너 내부에 SSH 서버를 설치해야 합니다. 이 예제에서는 SSH 프로토콜의 널리 사용되고 안전한 구현인 OpenSSH 서버를 사용합니다.

## 패키지 인덱스 업데이트
apt-get update

## OpenSSH 서버 설치
apt-get install -y openssh-server

SSH 서버 구성

다음으로 SSH 서버를 구성하여 원격 접근을 허용해야 합니다. /etc/ssh/sshd_config 파일을 수정하여 이를 수행할 수 있습니다.

## SSH 서버 구성 파일 열기
nano /etc/ssh/sshd_config

## 다음 설정 수정:
PermitRootLogin yes
PasswordAuthentication yes

이러한 설정은 루트 로그인 및 암호 기반 인증을 허용합니다. 테스트 목적으로 편리하지만, 실제 환경에서는 보안 강화를 위해 키 기반 인증을 고려해야 합니다.

SSH 서버 시작

SSH 서버를 구성한 후 서비스를 시작해야 합니다.

## SSH 서버 시작
service ssh start

이제 Docker 컨테이너는 SSH 연결을 수락할 준비가 되었습니다.

graph TD A[Docker 호스트] -- SSH 연결 --> B[Docker 컨테이너] B[Docker 컨테이너] -- SSH 서버 --> C[컨테이너 쉘]

표 2: SSH 서버 구성 옵션

옵션 설명
PermitRootLogin SSH 를 통해 루트 로그인을 허용하거나 금지합니다. 테스트에는 yes로 설정하지만, 실제 환경에서는 no를 사용해야 합니다.
PasswordAuthentication 암호 기반 인증을 허용하거나 금지합니다. 테스트에는 yes로 설정하지만, 실제 환경에서는 키 기반 인증을 사용해야 합니다.
PubkeyAuthentication 공개 키 기반 인증을 허용하거나 금지합니다. 실제 환경의 안전한 접근을 위해 사용합니다.

Docker 컨테이너에 SSH 를 통해 연결하기

이제 Docker 컨테이너에서 SSH 접근을 활성화했으므로 SSH 프로토콜을 사용하여 컨테이너에 연결할 수 있습니다.

컨테이너의 IP 주소 얻기

SSH 를 통해 Docker 컨테이너에 연결하려면 먼저 컨테이너의 IP 주소를 가져와야 합니다. 다음 명령어를 실행하여 이를 수행할 수 있습니다.

## Docker 컨테이너의 IP 주소 가져오기

<container_name>을 Docker 컨테이너의 이름이나 ID 로 바꿔주세요.

SSH 를 통해 컨테이너에 연결하기

컨테이너의 IP 주소를 얻었으면 ssh 명령어를 사용하여 컨테이너에 연결할 수 있습니다.

## SSH를 통해 Docker 컨테이너에 연결하기

<container_ip_address>를 이전 단계에서 얻은 IP 주소로 바꿔주세요.

SSH 서버가 암호 기반 인증을 사용하도록 구성한 경우 루트 암호를 입력하라는 메시지가 표시됩니다. 키 기반 인증을 설정한 경우 적절한 개인 키를 제공해야 합니다.

graph TD A[Docker 호스트] -- SSH 연결 --> B[Docker 컨테이너] B[Docker 컨테이너] -- SSH 접근 --> C[컨테이너 쉘]

표 3: SSH 연결 명령어

| 명령어 | 설명 |
| --------------------------------- | ---------------------------------------------------------------- | --------------------------------------- |
| docker inspect <container_name> | grep IPAddress | Docker 컨테이너의 IP 주소를 가져옵니다. |
| ssh root@<container_ip_address> | 루트 사용자를 사용하여 SSH 를 통해 Docker 컨테이너에 연결합니다. |

이러한 단계를 따르면 SSH 를 사용하여 Docker 컨테이너의 쉘에 안전하게 접근하여 다양한 관리 작업, 문제 해결 및 컨테이너화된 애플리케이션을 더 효과적으로 관리할 수 있습니다.

요약

이 튜토리얼을 마치면 Docker 컨테이너에서 SSH 접근을 활성화하고 SSH 를 사용하여 컨테이너에 연결하는 방법을 배우게 됩니다. 이 지식은 Docker 기반 애플리케이션을 더 효율적으로 관리하고, 컨테이너화된 환경에 대한 안전한 원격 접근 및 제어를 보장하는 데 도움이 될 것입니다.