스택큐힙리스트

SSH 에이전트 포워딩은 도커 빌드 중입니다. 본문

카테고리 없음

SSH 에이전트 포워딩은 도커 빌드 중입니다.

스택큐힙리스트 2023. 12. 5. 00:21
반응형

도커 이미지를 dockerfile을 통해 작성하는 동안에는, 깃허브 저장소를 복제해야 합니다. 제 공개 SSH 키들을 깃허브 계정에 추가했으며, 도커 호스트에서 저장소를 복제할 수 있습니다. 도커 호스트의 SSH 키를 사용할 수 있음을 알 수 있는데, 도커 실행 시에 $SSH_AUTH_SOCK 환경 변수를 매핑하는 방식으로 사용할 수 있습니다.


docker run --rm -it --name container_name \
-v $(dirname $SSH_AUTH_SOCK):$(dirname $SSH_AUTH_SOCK) \
-e SSH_AUTH_SOCK=$SSH_AUTH_SOCK my_image

도커 빌드 중에도 같은 방식으로 할 수 있는 방법이 있을까요?

답변 1

Docker 18.09 이상 사용하는 경우


도커의 새로운 기능을 사용하여 기존 SSH 에이전트 연결이나 키를 빌더로 전달할 수 있습니다. 이로써 빌드 중에 개인 저장소를 복제할 수 있습니다.


단계:


먼저 새로운 BuildKit을 사용하기 위해 환경 변수를 설정합니다.


export DOCKER_BUILDKIT=1

그런 다음 새로운 (실험적인) 구문으로 Dockerfile을 생성합니다:


# syntax=docker/dockerfile:experimental
FROM alpine
# ssh 클라이언트와 git 설치
RUN apk add --no-cache openssh-client git
# github.com의 공개 키 다운로드
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
# 우리의 개인 저장소 복제
RUN --mount=type=ssh git clone [email protected]:myorg/myproject.git myproject

그리고 다음 명령으로 이미지를 빌드합니다:

도커 빌드 --ssh default .

여기에서 자세한 내용을 읽어보세요: https://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066

답변 2

Docker 빌드 과정에서 SSH 에이전트 포워딩을 소개합니다.
SSH 에이전트 포워딩은 개발자가 Docker 빌드 시간 동안 SSH 개인 키를 사용할 수 있도록 도와주는 중요한 기능입니다. 이 기능을 이용하면 Docker 컨테이너 내에서 호스트 머신의 개인 키를 사용하여 외부 서버에 접속할 수 있습니다.
먼저, SSH 에이전트 포워딩을 사용하는 이유는 보안 관련 문제 때문입니다. Docker 빌드 과정에서 외부 서버와의 연결이 필요하거나 소스 코드 복제, 종속성 설치 등을 수행해야 할 때, SSH 개인 키는 매우 중요한 역할을 합니다. 그러나 Docker 이미지를 빌드하거나 공개 저장소에서 가져올 때마다 SSH 개인 키를 직접 포함하는 것은 보안상 취약할 수 있습니다. 이를 해결하기 위해 SSH 에이전트 포워딩을 사용하여 필요한 인증 정보를 안전하게 전달할 수 있습니다.
SSH 에이전트 포워딩을 사용하는 방법은 간단합니다. 우선, 호스트 머신에서 SSH 에이전트를 실행해야 합니다. 이는 `eval $(ssh-agent)` 명령을 통해 수행할 수 있습니다. 그런 다음, `ssh-add` 명령을 사용하여 개인 키를 에이전트에 등록합니다. 이러한 절차를 거치면 에이전트가 시작되고 개인 키가 안전하게 저장됩니다.
이제 Dockerfile에 아래와 같은 명령을 추가해야 합니다.
```
RUN eval $(ssh-agent -s) \
&& ssh-add ~/.ssh/id_rsa \
&& ssh-keyscan github.com >> ~/.ssh/known_hosts
```
위의 명령은 Docker 이미지 빌드 과정에서 SSH 에이전트를 시작하고 개인 키를 추가하는 역할을 수행합니다. 또한 `ssh-keyscan` 명령을 사용하여 호스트 머신이 이미 알고 있는 서버의 호스트 키를 이미지에 추가합니다.
SSH 에이전트가 실행되고 개인 키가 등록된 상태에서는 Dockerfile 내에서 외부 서버에 안전하게 접속할 수 있습니다. 이를 통해 소스 코드 복제, 외부 종속성 설치 및 기타 필요한 작업을 수행할 수 있습니다.
종합적으로, Docker 빌드 과정에서 SSH 에이전트 포워딩은 개인 키의 보안을 유지하면서 Docker 컨테이너 내에서 외부 서버에 접속하여 작업을 수행할 수 있는 기능입니다. Docker 파일에 필요한 명령을 포함하여 손쉽게 사용할 수 있으며, 이를 통해 개발자는 보안 문제를 해결하고 효율적인 작업 환경을 구성할 수 있습니다.

반응형
Comments