AWS CloudShell 출시 안내 및 사용 방법

Last Updated on 1월 1, 2021 by 태랑(정현호)



AWS CloudShell



CloudShell 은 AWS 콘솔에서 접속 하여 사용 할 수 있는 브라우저 기반의 무료 가상 터미널 서비스 입니다.

https://aws.amazon.com/cloudshell


Public IP를 가진 AWS EC2나 라이트세일 또는 기타 클라우드 서비스로 접속이 가능 합니다
(다만 외부에서는 CloudShell 로 접속이 불가능 합니다)


그래서 저는 AWS Cloud 외 다른 Cloud Iaas 나 서버로도 접속이 가능하며 CloudShell Oracle Cloud나 GCP, 네이버 클라우드(NBP) 와 같은 다른 클라우드 시스템 접속에도 활용하고 있습니다.


환경은 Amazon Linux 2를 기반이며 홈 디렉토리에 리전당 최대 1GB의 파일을 저장할 수 있습니다.

여기에는 .bashrc및 쉘 히스토리 파일과 같은 쉘 구성 파일이 포함되어 있습니다.

쉘은 일반 (권한이없는) 사용자로 실행되지만 sudo 필요한 경우 패키지를 설치할 수 있다라고 합니다.


CloudShell 세션은 20 분 정도 사용하지 않으면 시간 초과되어 창을 Refresh 해야 다시 사용할 수 있습니다





Safe Paste for multiline text 기능 제공

vi 로 파일을 편집하거나 명령어을 붙여넣기 할때 여러 라인을 한꺼번에 붙여넣을 경우 아래와 같이 AWS CloudShell 은 실수를 방지하기 위해서 안정장치를 마련하였습니다.


Paste 버튼을 눌르면 붙여넣기가 되고, Cancel 을 누르면 취소 됩니다.

포스팅 작성중 알게 된 기능으로 매우 좋은 기능 인것 같습니다.









현재 지원 되는 리전은


CloudShell 은 현재 미국 동부 (버지니아 북부) , 미국 동부 (오하이오) , 미국 서부 (오레곤) , 유럽 ​​(아일랜드) 및 아시아 태평양 (도쿄) 리전에서 사용할 수 있습니다.

나머지 리전에 대해서도 추가적인 지원이 될 예정이라고 합니다










CloudShell 접속



CloudShell 은 아래 링크를 통해 접속 하거나
https://aws.amazon.com/cloudshell (Link)








우측 상단에 CloudShell 아이콘을 클릭 하여 접속 할 수 있습니다.

CloudShell 아이콘은 현재 지원되는 리전으로 선택해야 아이콘이 보입니다.
포스팅 시점에서 서울은 서비스 지원 중이 아니므로 아이콘이 보이지 않습니다.

포스팅시에는 도쿄 리전으로 설정 하고 진행 하였습니다.









처음 접속 하면 아래와 같이 Welcome 화면이 보입니다.
하단의 Close 버튼을 클릭 합니다.










CloudShell 접속 후 몇가지 확인해본 화면 입니다.

CPU Process 는 2개로 확인되고 메모리 3GB, /home 영역 용량 1GB 가 확인 됩니다.









CloudShell 사용하여 클라우드 접속



CloudShell 을 이용하여 AWS에 생성된 EC2 로의 접속하는 내용으로 예제를 진행해보도록 하겠습니다.


EC2 생성시 기본생성되는 유저(우분투 같은 경우 ubuntu) 는 sudo 권한이 있는 유저입니다.


그래서 저는 보안적인 측면에서 sudo가 가능한 유저에 대해서 CloudShelll이 직접 접속 하는 방법이 아닌 별도의 유저를 생성 하여 그 유저로 접속하는 방식을 사용하려고 합니다



1. CloudShell -------> EC2 의 test 유저로 접속 
2. test 유저는 sudo 권한이 없기 때문에 su - 사용하여 root 로 접속

* test 유저명은 포스팅상 예제(임시)적인 이름입니다


이와 같이 사용하려고 합니다.








root 유저 비밀번호 생성

먼저 접속하려는 서버(EC2)에 접속하여 root 유저에 대해서 비밀번호를 생성하겠습니다

ubuntu$ sudo -i

root# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully







CloudShell 에서 접속 할 유저를 생성

root# adduser test
Adding user `test' …
Adding new group `test' (1001) …
Adding new user `test' (1001) with group `test' …
Creating home directory `/home/test' …
Copying files from `/etc/skel' …
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y


* test 라는 유저명은 예시 입니다.








.ssh 디렉토리 및 authorized_keys 생성

아래 절차와 같이 디렉토리 및 파일을 생성 합니다.

ubuntu$ sudo su - test

test$ mkdir .ssh
test$ chmod 700 .ssh
test$ cd .ssh
test/.ssh$ touch authorized_keys
test/.ssh$ chmod 600 authorized_keys






CloudShell 에서 SSH-Key 생성

이제 CloudShell 에 접속하여 SSH-Key를 생성 하도록 하겠습니다.


[cloudshell-user]$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cloudshell-user/.ssh/id_rsa): [엔터]
Created directory '/home/cloudshell-user/.ssh'.
Enter passphrase (empty for no passphrase): [엔터]
Enter same passphrase again: [엔터]
Your identification has been saved in /home/cloudshell-user/.ssh/id_rsa.
Your public key has been saved in /home/cloudshell-user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxx cloudshell-user@ap-northeast-1.compute.internal
The key's randomart image is:
+---[RSA 4096]----+
| .. o.o+.o..|
|. oooo+.o o+.o + |
|.o+.oo+.oo+.oo+.o|
|.+o+.oo+.oo+.oo+ |
|.o+.oo+.oo+.oo+.o|
|.o+.oo+.oo+.o |
|++. . o . |
|oo . . |
| …… |
+----[SHA256]-----+



[cloudshell-user]$ cd .ssh

[cloudshell-user .ssh]$ ls -al
total 16
-rw------- 1 cloudshell-user cloudshell-user 3243 Dec 16 id_rsa
-rw-r--r-- 1 cloudshell-user cloudshell-user 787 Dec 16 id_rsa.pub








공개키(pub)를 접속 하고자 하는 서버에 전송을 해야 합니다.



전송하는 방법은 2가지가 있습니다.

1. 키를 직접 다운받고 Upload 하여 추가 하거나
2. 키 문자열(string) 을 복사 하여 붙여넣거나









키를 다운로드 받아 사용

키를 직접 다운 받고 서버에 업로드 하는 방식은 아래 처럼 다운로드 기능을 이용하면 됩니다

CloudShell 우측 상단에 Actions 를 클릭 => Download File 을 선택 합니다.










다운로드 받을 경로와 파일명을 입력 후 "Download" 버튼을 클릭 합니다.

.ssh/id_isa.pub










경로와 파일명이 맞다면 아래와 같이 파일을 다운로드 받을 수 있습니다.









파일을 .ssh 디렉토리에 업로드 후에 authorized_keys 파일로 키를 추가 합니다.

test .ssh$ cat id_rsa.pub >> authorized_keys









키 문자열을 직접 복사

다른 방법으로는 직접 내용을 복사하여 서버의 authorized_keys 에 붙여넣는 방법 입니다.


[cloudshell-user]$ cd .ssh
[cloudshell-user .ssh]$ ls -al
total 16
-rw------- 1 cloudshell-user cloudshell-user 3243 Dec 16 id_rsa
-rw-r--r-- 1 cloudshell-user cloudshell-user 787 Dec 16 id_rsa.pub

[cloudshell-user .ssh]$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA ……………..
……………………………………………………
…………………………………………..

==> id_rsa.pub 파일 안의 키 문자열을 모두 그대로 복사(클립보드 복사) 합니다.








접속 하고자 하는 서버에서 authorized_keys 파일을 vi 로 편집하여 키를 추가 합니다



[test .ssh]$ vi authorized_keys


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA ……………..
……………………………………………………
…………………………………………..








접속 테스트

CloudShell 에서 생성한 공개키(pub)를 접속하고자 하는 서버에 추가 하였다면 접속을 시도해 봅니다

설정이 정상적으로 되었다면 아래와 같이 접속이 되는걸 확인할 수 있습니다.

[cloudshell-user .ssh]$  ssh test@ip











Config 파일을 활용한 SSH 접속



접속 대상이 많고 계정이 다양하다면 매번 접속대상의 ip 와 계정명등을 확인을 해야 할 수도 있습니다.


접속대상이 많고 할 때는 config 파일을 생성해서 접속하는 것도 한가지 도움이 되는 방법 입니다.


[cloudshell-user]$ cd .ssh
[cloudshell-user .ssh]$ vi config

.ssh 디렉토리 아래 config 파일을 생성 후 아래와 같은 형식으로 내용을 입력 합니다.

Host 는 접속하고자 하는 alias 형태이고
Hostname 은 접속 서버의 IP나 도메인명
User  접속 대상 유저 명
IdentityFile 개인키 위치 및 파일명



Host aws-instance1
HostName xxx.xxx.xxx.xxx
User test
IdentityFile ~/.ssh/id_rsa



내용을 입력 후 아래와 같이 접속을 하면 됩니다.

[cloudshell-user .ssh]$ ssh aws-instance1

Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1029-aws x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

New release '20.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Dec 16 14:32:39 2020 from 
test@ $




Conclusion



네트워크 보안상 SSH(TCP:22) 패킷이 외부로 발송이 막혀져있는 환경이거나, 터미널 프로그램이나 ssh-key 가 별도로 없는 pc 환경에서 바로 사용해야할 경우 등 여러 상황에서 유용하게 사용할 수 있는 유용한 서비스 라고 생각 됩니다.


사용에 관한 추가 정보는 아래 링크를 통해 확인 해보시면 됩니다.




연관된 글

답글 남기기