21.12.11 추가
- SSMuser 생성은 굳이 필요 없다.
-> Administrator / pem키 해독한 password로도 충분히 접속 가능하다 - ssm/ssmmessages/ec2messages 3개 endpoint만 있다면 NAT조차 없는 Private한 서브넷에 있는 Window EC2에도 RDP로 접속할 수 있다
이전에 Session Manager로 Windows Server 접속하는 글을 쓴 적이 있지만, 그저 PowerShell로 접속되는 글이었다
윈도우의 가장 큰 장점은 편리한 GUI이므로 좀 귀찮지만 RDP로 접속하는 일을 해보겠다
목표 : 로컬에서 RDP 포트가 열려있지 않은 윈도우 서버에 RDP로 접속하기
목차
1. EC2용 IAM 역할 & Windows Server 2019 EC2 생성
2. Session Manager로 접속할 사용자 생성
3. 로컬에서 필요한 파일들 설치
4. 자격 증명에 필요한 IAM User 생성
5. RDP 접속
시작!
1. EC2용 IAM 역할 & Windows Server 2019 EC2 생성
먼저 AmazonEC2RoleforSSM 정책이 붙어있는 IAM 역할을 만들어주자. 난 ec2-ssm 이란 이름으로 만들었다
그리고 EC2는 Windows Server 2019 Base 로 만들어주자
(다른 윈도우로 해도 무방하나 Marketplace의 AMI를 사용하면 서버에 SSM Agent를 따로 설치해줘야 한다)
RDP는커녕 아무것도 열려있지 않은 보안그룹을 만들어서 붙여준다
인스턴스 상태가 실행 중이 되면, 위에서 만든 ec2-ssm 역할을 붙여준다
(작업 > 보안 > IAM 역할 수정)
위에서도 말했지만 AWS에서 제공하는 AMI들엔 기본적으로 SSM Agent가 다 깔려있다
그래서 IAM 역할만 붙여주면 서버에서 별다른 설정 없이 바로 연결할 수 있다
연결 > Session Manager
해당 서버의 PowerShell로 접속되었다
2. Session Manager로 접속할 사용자 생성
Session Manager PowerShell에서 아래 명령으로 새 사용자를 만들어 설정해주자
# 보안 문자열로 암호 입력
$Password = Read-Host -AsSecureString
[원하는 비번 설정]
# 로컬 사용자 만들기
New-LocalUser "SSMuser" -Password $Password
# Remote Desktop Users 그룹에 사용자 추가
Add-LocalGroupMember -Group “Remote Desktop Users” -Member “SSMuser”
Read-Host : 한 줄 입력을 받음
-AsSecureString : 입력을 보안 문자열(*)로 저장
New-LocalUser : 새 local user 계정을 만듬
Add-LocalGroupMember : local 그룹에 멤버 추가
3. 로컬에서 필요한 파일들 설치
로컬에서 진행 - 나는 윈도우(cmd)에서 진행했다
위 두 링크에서 파일을 다운받은 후 실행해 설치를 완료해주자
잘 설치되었는지 확인하려면 아래 명령을 쳐보면 된다
aws --version
session-manager-plugin
4. 자격 증명에 필요한 IAM User 생성
awscli로 접속할 IAM User가 필요하다
IAM > 사용자 > 사용자 추가
이름을 대충 정해주고, 프로그래밍 방식 액세스만 체크해서(cli로만 사용할 계정이니까) 권한 탭으로 넘어가자
기존 정책 직접 연결 > 정책 생성 > JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"ssm:TerminateSession"
],
"Resource": "*"
}
]
}
StartSession, TerminateSession 권한을 갖는 정책을 만들어서 만들던 User에 붙여주면 된다
그러고 생성을 완료하면, 키를 받을 수 있는 창이 뜬다
액세스 키와 시크릿 키를 다운받든 복사해두든 하고, cmd에서 aws configure
를 실행한다
액세스 키, 시크릿 키, 리전만 설정해주고 넘기자
5. RDP 접속
이제 준비는 모두 끝났다
일단 3389 포트가 안열려있는데 RDP로 접근할 수 있는 원리는 "포트 포워딩" 이다
AWS-StartPortForwardingSession
이란 문서를 통해 포트 포워딩 방식으로 3389에서의 트래픽을 원하는 로컬 포트로 리디렉션해주는 것이다
일단 cmd에서 아래 명령을 쳐서 원하는 로컬 포트를 열어주자
aws ssm start-session --target <instance-id> --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=55678,portNumber=3389"
이렇게 뜨면 RDP 접속 일보 직전이다 (Waiting이라 뜨길래 안되는건줄 알고 여기서 한참 삽질을 했었다...)
각자 로컬에서 원격 앱을 아무거나 틀어보자
난 윈도우의 원격 데스크톱 연결을 실행해봤다
연결할 컴퓨터에 localhost:55678(자신이 적은 로컬 포트번호)를 적어준 후, 옵션 표시를 누른다
사용자 이름에 아까 생성한 User의 이름을 넣고, 설정했던 비밀번호까지 치고 확인을 눌러주면?
위의 스펙들을 비교해보면 아까 생성한 그 ec2가 맞다...
이렇게 RDP 포트 안열어놓은 윈도우 서버에 RDP로 접속하기를 드디어 성공했다
끝!
참조
'공부 > AWS' 카테고리의 다른 글
[AWS] NVMe 형식 EBS 자동 마운트 스크립트 (0) | 2021.04.27 |
---|---|
[AWS] Site-to-Site VPN vs Client VPN (0) | 2021.04.15 |
[AWS] Session Manager 설치해보기 2 (Windows Server 2019) (0) | 2021.03.15 |
[AWS] Session Manager 설치해보기 1 (CentOS 8) (0) | 2021.03.15 |
[AWS] SageMaker Notebook으로 ML 맛보기 (MNIST, k-means) (3) | 2021.02.27 |
댓글