2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

도커에서 SSH를 사용하는 방법은 무엇인가요?

_____
Q1: 도커 컨테이너에서 SSH를 직접 사용하는 것이 가능한가요?
A1: 기술적으로 가능합니다. 그러나 도커 컨테이너는 일반적으로 단일 애플리케이션을 실행하도록 설계되어 있어 SSH 데몬을 포함하지 않는 것이 권장됩니다. 대신 도커 CLI와 `docker exec` 명령어로 컨테이너 내부에 접근하는 편이 더 안전하고 효율적입니다.

---

Q2: 도커 컨테이너에 SSH 서버를 설치하고 실행하려면 어떻게 하나요?
A2: 다음과 같은 절차로 설치 가능합니다.

1. Dockerfile 작성 시 필요한 SSH 서버(예: OpenSSH)를 설치합니다.
```Dockerfile
FROM ubuntu:20.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:yourpassword' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

EXPOSE 22

CMD ["/usr/sbin/sshd","-D"]
```

2. 도커 이미지를 빌드하고 컨테이너 실행 시 22번 포트를 호스트와 연결합니다.
```bash
docker build -t my_ssh_image .
docker run -d -p 2222:22 my_ssh_image
```

3. 이후 호스트에서 `ssh root@localhost -p 2222` 명령으로 접속 가능합니다.

---

Q3: 도커에서 SSH 사용이 권장되지 않는 이유는 무엇인가요?
A3: 도커 컨테이너는 가볍고 빠른 애플리케이션 실행을 위해 설계되어 SSH 같은 추가 데몬을 실행하면 불필요한 리소스 낭비가 발생하고 보안 위험이 커집니다. 또한 컨테이너 내부 변경사항이 휘발적이므로, 접속 후 설정 변경 사항이 쉽게 사라질 수 있습니다. 대신 `docker exec` 명령을 이용해 직접 쉘에 접속하는 방식을 권장합니다.

---

Q4: SSH 없이 도커 컨테이너 내부에 접근하려면 어떻게 하나요?
A4: 다음 명령어를 사용하면 됩니다.
```bash
docker exec -it <컨테이너ID 또는 이름> /bin/bash
```
이 명령어는 컨테이너 내부에 인터랙티브 쉘을 제공하며, 별도의 SSH 서버 없이 컨테이너 내부 작업을 수행할 수 있습니다.

---

Q5: 도커 컨테이너에서 SSH 키 인증을 설정하려면 어떻게 하나요?
A5: SSH 서버를 설치한 컨테이너라면 일반적인 리눅스 SSH 서버 설정과 같습니다.

1. 호스트에서 공개키(`id_rsa.pub`)를 컨테이너 내 `/root/.ssh/authorized_keys`에 복사합니다.
2. 권한을 제대로 설정합니다 (`chmod 700` `.ssh` 폴더, `chmod 600` authorized_keys).
3. SSH 데몬이 공개키 인증을 허용하도록 설정되어 있어야 합니다 (`/etc/ssh/sshd_config` 확인).
4. 이후 SSH 클라이언트에서 비밀번호 없이 키 인증으로 접속할 수 있습니다.

---

Q6: 도커의 공식 권장 SSH 접근 방법은 무엇인가요?
A6: 공식 권장 방식은 `docker exec`를 통해 컨테이너 내부에 접속하는 것입니다. SSH 데몬을 별도로 설치하거나 실행하는 것을 피하고, 필요한 경우 도커 네트워크 및 볼륨 기능을 통해 원격 접근이나 데이터 공유 문제를 해결합니다.

---

요약:
- 도커 컨테이너에서 SSH 서버 설치 및 실행은 가능하나 권장되지 않음
- 컨테이너 접근은 `docker exec` 명령어 활용을 권장
- SSH 서버 설치 시 OpenSSH 설치, 설정, 포트 매핑 필요
- SSH 키 인증 설정은 일반 리눅스 내 SSH 설정과 동일
- 보안 및 리소스 관리 측면에서 단일 프로세스 실행 원칙을 지키는 것이 중요함
도커(Docker)는 컨테이너화된 애플리케이션을 개발하고 배포하는 데 사용되는 플랫폼입니다.

도커 컨테이너는 경량화된 환경에서 애플리케이션을 실행할 수 있도록 해주지만, 기본적으로 SSH(Secure Shell) 서버가 설치되어 있지 않습니다.

그러나 특정 상황에서는 도커 컨테이너에서 SSH를 사용해야 할 필요가 있을 수 있습니다.

예를 들어, 원격으로 컨테이너에 접근하거나, 특정 서비스와의 통신을 위해 SSH를 설정할 수 있습니다.

다음은 도커에서 SSH를 사용하는 방법에 대한 단계별 가이드입니다.

1. Dockerfile 작성 먼저, SSH 서버를 설치하고 설정하기 위해 Dockerfile을 작성해야 합니다.

아래는 Ubuntu 기반의 이미지를 사용하는 예시입니다.

```Dockerfile 베이스 이미지로 Ubuntu 사용 FROM ubuntu:20.04 패키지 업데이트 및 OpenSSH 서버 설치 RUN apt-get update && \ apt-get install -y openssh-server && \ apt-get clean SSH 디렉토리 생성 RUN mkdir /var/run/sshd root 비밀번호 설정 (보안상 좋지 않지만 예시로 사용) RUN echo 'root:password' | chpasswd SSH 포트 노출 EXPOSE 22 SSH 서버 시작 CMD ["/usr/sbin/sshd", "-D"] ```

2. 이미지 빌드 위의 Dockerfile을 사용하여 이미지를 빌드합니다.

터미널에서 다음 명령어를 실행합니다.

```bash docker build -t my-ssh-image . ```

3. 컨테이너 실행 SSH 서버가 포함된 이미지를 기반으로 컨테이너를 실행합니다.

포트 22를 호스트와 연결하여 SSH 접근을 가능하게 합니다.

```bash docker run -d -p 2222:22 --name my-ssh-container my-ssh-image ``` 위 명령어에서 `-p 2222:22`는 호스트의 2222 포트를 컨테이너의 22 포트에 매핑합니다.

이제 호스트의 2222 포트를 통해 SSH로 접근할 수 있습니다.



4. SSH 클라이언트로 접속 SSH 클라이언트를 사용하여 컨테이너에 접속합니다.

다음 명령어를 사용하여 SSH로 접속할 수 있습니다.

```bash ssh root@localhost -p 2222 ``` 비밀번호는 Dockerfile에서 설정한 `password`입니다.

접속 후, 컨테이너 내부에서 명령어를 실행할 수 있습니다.



5. 보안 고려사항 - 비밀번호 보안 : 위의 예시에서는 root 비밀번호를 설정했지만, 실제 환경에서는 강력한 비밀번호를 사용하거나 SSH 키 인증을 사용하는 것이 좋습니다.

- SSH 키 인증 : SSH 키를 사용하여 인증하는 방법이 더 안전합니다.

이를 위해서는 SSH 키를 생성하고, 컨테이너에 공개 키를 추가해야 합니다.

- 방화벽 설정 : SSH 포트를 외부에 노출할 경우, 방화벽 설정을 통해 접근을 제한하는 것이 좋습니다.



6. SSH 키 인증 설정 (선택 사항) SSH 키 인증을 설정하려면 다음 단계를 따릅니다.

1. SSH 키 생성 : 로컬 머신에서 SSH 키를 생성합니다.

```bash ssh-keygen -t rsa -b 2048 ```

2. 공개 키 복사 : 생성된 공개 키(`~/.ssh/id_rsa.pub`)를 컨테이너의 `~/.ssh/authorized_keys`에 추가합니다.

이를 위해 Dockerfile에 다음 명령을 추가합니다.

```Dockerfile COPY id_rsa.pub /root/.ssh/authorized_keys RUN chmod 600 /root/.ssh/authorized_keys ```

3. SSH 서버 재시작 : 컨테이너를 재시작하여 변경 사항을 적용합니다.

결론 도커에서 SSH를 사용하는 것은 특정 상황에서 유용할 수 있지만, 보안상의 이유로 일반적으로 권장되지 않습니다.

도커의 기본적인 사용 방식은 컨테이너 내부에서 직접 명령어를 실행하는 것이며, SSH를 사용하는 대신 `docker exec` 명령어를 통해 컨테이너에 접근하는 것이 더 안전하고 효율적입니다.

그러나 SSH가 필요한 경우 위의 방법을 통해 설정할 수 있습니다.

작성자: 이주환 [비회원] | 작성일자: 1년 전 2024-12-28 18:51:23
조회수: 149 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.