[Azure VM] Azure VM 생성 및 ssh/rdp 접속하기

2021. 8. 29. 22:23Engineering/Azure

AWS E2C 인스턴스 원격 접속 방법을 소개했던 이전 글 조회수가 꽤 되는 것을 보고... 

Azure VM에 원격 접속 하는 방법도 소개합니다. 
#이전글참고 - [AWS] EC2 인스턴스에 ssh 접속 하기 (tistory.com)]

 

Azure의 경우 

Windows 계열은 계정 비밀번호 방식을 통한 RDP 접속을 지원 하며,

Linux 계열은 a) 계정 비밀번호 방식 또는 b) SSH 키 방식을 통한 2가지 SSH 접속 방법을 지원합니다. 

 

각각 살펴보도록 하죠.

 

 

1. Azure VM 생성

먼저 VM 생성 방법부터 알아보죠.

Azure 포탈을 통해 손쉽게 생성할 수 있습니다. 

개인적으로 Azure의 포탈은 직관적으로 초보자들도 쉽게 사용할 수 있게 잘 만들어 둔 것 같습니다. 

 

Azure 포탈에서 로그인 하셨다면, Azure VM(가상머신) 상품을 검색해 들어가서 '만들기'를 클릭합니다. 

 

 

그럼 아래와 같은 화면이 보일 겁니다. 

다양한 설정들이 가능합니다만, 오늘은 원격접속 방법이 주제인 만큼 그에 관련된 설정들만 설명하겠습니다. 

기본적으로 '기본 사항'에 필수값들만 입력해주면 나머지 설정은 default값으로 입력되어 VM 생성에 문제가 없습니다. 

따라서 '기본 사항'에 필수값들을 필요맞게 입력해주세요 :-)

 

 

 

그럼 원격 접속을 위해 주의 깊게 살펴볼 설정값들은 무엇일까요?

바로 하단에 보이는 1) '관리자 계정' 정보와 2) '인바운드 포트 규칙' 정보 입니다. 

 

1) 관리자 계정 정보

말 그대로 Azure VM에서 사용할 관리자 계정 정보를 입력하는 공간 입니다. 

이 계정 정보를 가지고 VM에 원격 접속할때 로그인이 필요하므로 여기서 설정한 사용자이름/비밀번호를 꼭 기억해주셔야 합니다. 

여기서 '인증 형식' 이 눈에 띄실 겁니다. 

생성된 VM에 원격 접속하여 로그인 할때 인증을 어떻게 하느냐죠.

 

 

간단히 관리자 계정의 이름/암호를 가지고 계정 인증을 하는 '암호' 방식

SSH 키 교환 방식을 사용해 보다 안전한 방법으로 인증을 하는 'SSH 공개 키' 방식이 있습니다. 

 

일반 암호 방식은 로그인 과정에서 송/수신 되는 사용자 암호정보가 '암호화' 되지 않은 채로 패킷에 담겨 전달 되어 

악위적인 누군가가 이 패킷을 가로채 파본다면 내 암호가 금방 노출될 수 있다는 단점이 있습니다.

그러나 SSH 키 교환 방식은 이 사용자 암호 정보를 '암호화'된 방식으로 교환하기 때문에 보안상 이점이 있습니다. 

 

 

Windows VM의 경우에는 '암호' 형식만을 지원합니다. 

따라서 Windows 이미지를 선택한 경우 SSH 키 교환 옵션이 보이지 않을 겁니다. 

 

 

2) 인바운드 포트 규칙

인바운드 포트 규칙은 Azure VM으로 들어오는 어떤 포트에 대한 접속을 허용 하는가에 대한 규칙입니다. 

Azure 기본적으로 외부 인터넷에서 Azure VM으로 들어오는 모든 접속을 차단하도록 설정합니다. 

따라서 원격접속을 위한 규칙을 따로 추가하지 않으면 VM 원격 접속이 불가하겠죠.

 

Windows 의 경우 원격접속으로 RDP를 사용하므로, RDP 기본 포트인 3389번을 추가해야 하며,

Linux의 경우 원격접속으로 ssh를 사용하므로, ssh 기본 포트인 22번을 추가해야 합니다. 

 

 

 

자, 그럼 Windows/Linux 별로 VM 생성 하여 원격 접속하는 방법을 각각 알아봅시다. 

 

 

 

2. Windows VM RDP 접속 하기 

먼저 아래와 같은 정보로 Windows VM을 생성하였습니다. 

Windows는 암호 인증만 지원되므로, '관리자 계정' 정보를 입력하고 인바운드 포트는 RDP 포트인 3389 포트를 허용 합니다. 

 

 

 

VM 이 생성되면 Azure 포탈 > VM > 네트워크 탭에 들어가 인바운드 포트 규칙이 정상 생성되었는지 확인해봅시다. 

아래와 같이 RDP라는 이름으로 3389 포트를 모든 소스 IP/PORT 에 대해 허용하는 규칙이 생성되어 있음을 확인 할 수 있습니다. 

그럼 이 3389 포트로 RDP 접속을 해볼까요? 

Azure 포탈 > VM > 연결 탭에 들어가 RDP 파일을 다운 받습니다. 

(이때 IP 주소가 VM이 사용중인 공용 IP가 맞는지 확인하세요. VM 생성 시 네트워크 설정 부분을 변경한 게 없다면 Azure에서 공용 IP 1개를 자동으로 만들어서 VM에 연결해 줍니다.)

다운로드 받은 RDP 파일 실행하여 '연결' 버튼을 누르고, 

로그인할 계정을 선택할 때 다른 계정으로 로그인 옵션을 선택합니다.

VM 생성시 입력했던 관리자 계정 정보를 사용하여 로그인 합니다. 

위와 같은 경고 창이 나올텐데, Yes를 눌러 주시면 됩니다. 

아래와 같이 Windows VM에 접속된다면 성공입니다!

 

 

3. Linux VM SSH 접속 하기 

3-1. 암호 인증 방식 사용하기

먼저 암호 인증 방식을 사용하여 VM에 접속하는 방법을 알아봅니다. 

암호 인증 방식을 사용하기 위한 VM은 아래와 같이 생성 하였습니다. 

 

마찬가지로 Azure 포탈 > VM > 네트워킹 탭을 보면 이번엔 ssh 접속을 위한 22번 포트 허용 규칙이 추가되어 있는 것을 확인할 수 있습니다. 

 

암호 방식을 사용하기로 설정했기 때문에 바로 ssh 접속을 하실 수 있습니다. 

그전에 ssh 접속을 할 VM의 IP를 알아야 겠죠? 

네트워킹 탭에서 공용 IP를 확인하시면 됩니다. 

 

그럼이제 로컬 머신에서 터미널을 켜고 아래와 같이 ssh 접속 명령을 입력합니다. 

이때 VM을 생성할 때 입력했던 관리자 계정 정보를 이용하여 로그인 하면 됩니다. 

 

# ssh {관리자 계정 명}@{VM 공용IP}

 

3-2. SSH 키 인증 방식 사용하기

SSH 키는 쌍을 공개키/프라이빗키가 쌍을 이루어 암호화/복호화에 사용됩니다. 

자세한 내용은 'ssh 키 페어' 에 대해 공부해보시길 바랍니다. 

이때, SSH 프라이빗는 VM 에 접속할 사용자에게 주어지는 키로 사용자는 이 프라이빗키를 사용하여 VM 로그인 하게 됩니다. 

그리고 Azure VM을 처음 생성하실 때 이 SSH 키 쌍을 자동 생성하게 요청할 수 있습니다. 

 

SSH 키 인증 방식을 사용하는 경우 아래와 같이 VM을 생성하면 되는데요,

SSH 공개 키 원본을 '새 키 쌍 생성'으로 선택한 것을 확인하실 수 있습니다. 

(기존에 만들어둔 키 쌍이 있다면 기존 정보를 사용 하실 수 있습니다.)

 

위와 같이 새 VM 생성을 하게 되면, 아래와 같이 SSH 프라이빗키를 다운받을 수 있는 팝업이 뜹니다. 

SSH 프라이빗키를 다운받아 따로 저장해두시고, VM 접속 시마다 사용하시면 됩니다. 

 

 

이렇게 생성한 VM도 마찬가지로 네트워킹 탭에 보시면 22번 포트 인바운드 규칙이 추가된 것을 확인할 수 있습니다.

(3-1.에서 확인하는 방법을 알려 드렸으니 여기서는 생략합니다.)

 

 

그럼 바로 SSH 접속을 시도해 봅시다. 

ssh 명령의 -i 옵션을 사용하여 다운로드 받은 SSH 프라이빗 키 를 입력하여 접속 하시면 됩니다. 

 

#ssh -i {프라이빗 키 경로} {관리자 계정 명}@{VM 공용 IP}

 

SSH 키를 사용하면 암호화된 로그인 저옵를 사용하기 때문에 암호 인증방식과 달리 직접 암호를 입력하지 않아도 됩니다. 

 

 

 

 

 

4. 보다 안전한 인바운드 규칙 설정하기

지금까지 생성한 VM의 인바운드 규칙을 다시 한번 볼까요? 

Windows VM을 예로 들겠습니다. 

원격 접속을 위한 RDP 포트로의 모든 소스 IP/PORT 접속을 허용하고 있습니다. 

 

 

이러한 설정은 보안에 취약합니다. 

악위적인 사용자가 임의 IP에 대해 원격접속을 시도하는 상황에 쉽게 노출될 수 있죠.

따라서 소스 IP 를 이 VM을 사용하는 사용자들의 IP로만 제한 해주는 것이 좋습니다. 

 

Azure 포탈 > VM > 네트워킹 > RDP 규칙을 누르면 해당 규칙을 편집할 수 있으며, 

소스 IP를 '모두'가 아닌 VM 사용자 IP 값으로 변경하시길 권장 드립니다. 

이러한 제한적인 인바운드/아웃바운드 규칙 설정은 Azure VM 뿐만 아니라 일반적인 IT 설계의 보안을 위한 기본 사항입니다.