Azure Cloud Shell에서 SSH Agent 사용

Azure Cloud Shell (이하 Cloud Shell)은 Azure CLI 도구를 미리 인증이 완료된 상태에서 간편하게 불러다 사용할 수 있는 매우 유용한 웹 기반 CLI 도구입니다.

Cloud Shell은 기본적인 유틸리티를 상당수 포함하고 있어서 해볼 수 있는 일들이 매우 많습니다. 그 중에서도 이번 아티클에서는 SSH Agent 인증을 Cloud Shell에서 간편하게 처리할 수 있는 방법을 살펴보도록 하겠습니다.

Cloud Shell 준비하고 키 업로드하기

우선 portal.azure.com에 접속하여 Cloud Shell에 필요한 기본 리소스를 설정하는 초기화 작업을 한 번 거쳐야 합니다. 복잡한 과정 없이, 실행 한 번만 하면 필요한 기본 설정을 Azure Portal이 스스로 해줍니다.

포털 우측 상단의 >_ 아이콘을 클릭합니다.

Cloud Shell을 한 번 시작하면, 아래 그림과 같이 Cloud Shell 내에서 작업한 데이터를 영구적으로 저장할 수 있는 범용 저장소 계정이 같이 만들어집니다. 리소스 그룹 이름이 cloud-shell-storage 로 시작하기 때문에 쉽게 알 수 있습니다.

cloud-shell-storage 리소스 그룹 안의 저장소 계정의 Files 메뉴를 클릭합니다.

Files 메뉴를 클릭하여 들어오면 다음과 같이 미리 만들어져있는 볼륨이 보입니다. 이 볼륨을 클릭한 다음, SSH 키 인증에 필요한 PEM 파일을 미리 업로드합니다.

cs-… 공유 볼륨을 선택한 다음 나타나는 화면에서 PEM 파일을 업로드합니다.

키 업로드가 끝난 후, Cloud Shell 안에서 파일을 사용할 수 있는지 확인해봅니다. Bash 셸 기준으로 clouddrive 디렉터리 안에 업로드한 파일이 보이면 됩니다.

clouddrive 디렉터리 안에 업로드한 파일이 들어있는지 확인합니다.

run-agent.sh 스크립트 만들기

이제 SSH 에이전트와 SSH 키를 등록할 수 있도록 환경을 만들 차례입니다. 아래와 같이 run-agent.ssh 파일을 작성하여 clouddrive 디렉터리 안에 저장하도록 합니다.

#!/bin/bash
eval $(ssh-agent -s)
$SHELL

SSH 에이전트 자체는 직접 실행할 수 있는 바이너리가 아니라 스크립트로 구성되어있어서, Bash 셸의 해석이 필요합니다. 그리고 셸 스크립트가 종료되지 않고 남아있도록 하기 위하여, $SHELL 환경 변수 안에 들어있는 명령으로 자식 셸 프로세스를 한 번 더 만듭니다.

SSH 키 등록하기

위의 스크립트를 실행하면 다음과 같이 나타납니다.

./run-agent.sh
Agent pid 227

위와 같이 화면에 표시된 상태에서 ssh-add 명령으로 키 파일을 등록합니다.

ssh-add rkttu.pem
Enter passphrase for rkttu.pem:

암호를 입력한 다음 git 클라이언트나 ssh 클라이언트로 키 인증이 필요한 대상에 접속을 시도해봅니다.

클라우드 셸을 닫은 다음에는

clouddrive 디렉터리 안에 저장하는 파일들은 해당 리소스 그룹이나 디렉터리 내에서 파일을 직접 삭제하지 않는 한, 계속 유지됩니다. 클라우드 셸을 닫고난 후에도 언제든 clouddrive 디렉터리에서 run-agent.sh 스크립트를 실행하고 키를 등록하면 언제든 재사용할 수 있습니다.

이미지 출처: https://azure.microsoft.com/en-us/features/cloud-shell/

글쓴이: 남정현

http://www.rkttu.com

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.