목표

이번 시간의 목표는 SSH 접속을 이용하여, 웹 브라우저상의 콘솔 페이지를 이용하지 않고도 직접 VM 인스턴스를 제어하는 방법과 인스턴스로 파일을 전송하는 방법에 대해 알아보도록 하겠습니다.

VM 콘솔 화면

1
클라우드 시스템의 웹 콘솔을 이용하여 VM 인스턴스를 사용하는데 다음과 같은 불편한 사항들이 있을 수 있습니다.

  • 인스턴스의 화면을 캡쳐하여 전송받는데 끊김이 존재합니다.
  • 텍스트나 데이터를 복사/붙여넣기 할 수 없습니다.
  • 웹 콘솔을 통해서는 VM 인스턴스로 파일을 전송할 수 없습니다.

그러나 위 문제들은 쉽게 해결 가능합니다. 우리가 VM 인스턴스를 조작할 때에는 대부분 터미널 화면을 통해 명령어들을 타이핑하고, 실행 결과물을 텍스트로 보고 받습니다. 그렇다면 화면을 캡쳐할 필요 없이 커맨드/아웃풋 텍스트만 VM 인스턴스와 주고 받으면 되는것 아닐까요? 화면 전체를 캡쳐하여 이미지를 전송하는 대신 텍스트 데이터를 이용하게 된다면 통신에 필요한 대역폭을 절감할 수 있습니다.

SSH

ssh-client-and-server
SSH란 Secure SHell의 약자로써 네트워크상의 다른 컴퓨터에 로그인하여 명령을 실행하고 정보를 보고 받을수 있도록 해 주는 통신 프로토콜을 의미합니다. 이 때 사용자가 접속에 사용하는 컴퓨터를 클라이언트, 접속하고자 하는 목적지 컴퓨터를 서버라고 부릅니다. SSH는 다음 기능들을 수행합니다.

  • 네트워크상의 다른 컴퓨터에 접속하여 로그인을 합니다.
  • 로그인 뒤 원격지의 컴퓨터에서 명령어를 실행하고 결과를 돌려받습니다.
  • 통신 과정중 오고 가는 모든 데이터를 암호화하여 중간에서 가로챌 수 없도록 합니다.

SSH 사용 준비 1

SSH 통신을 사용하기 위해서는 SSH 통신을 수용하는 SSH 서버와, 서버로 통신을 요청하는 SSH 클라이언트 프로그램이 필요합니다. 클라우드 시스템 상의 모든 OS 이미지들에 기본적으로 SSH 서버 프로그램이 준비되어 있습니다. 따라서 우리는 SSH 통신을 사용하기 위해 단말 컴퓨터에 SSH 클라이언트 프로그램을 설치하기만 하면 됩니다.
2-1
다양한 SSH 클라이언트 프로그램들이 존재하지만 저는 Bitvise라는 SSH 클라이언트 프로그램을 추천드리고 싶습니다. 여기에서 무료로 다운받아 사용하실 수 있습니다.
1-1
Bitvise SSH client 인스톨러를 다운받은 다음 실행시켜 Bitvise SSH client를 설치해 주시기 바랍니다.
2-2
Bitvise SSH client를 설치하면 바탕화면에 Bitvise 바로가기가 생성됩니다.
3-1
바로가기 아이콘을 더블클릭하여 Bitvise client 프로그램을 실행시키면 위와 같은 창이 생성됩니다.
4-1
상단의 탭들 중 Options 탭으로 이동하여 Reconnection 항목에서 Never reconnect automatically 옵션을 선택하여 주십시오. On Login 항목에서는 세 개의 체크박스들을 모두 체크 해제해주시기 바랍니다.
5-1
Terminal 탭에서는 Protocol 항목의 옵션을 xterm-256color로 변경하여 주시기 바랍니다.
6-1
설정 변경을 끝낸 뒤 맨 처음의 Login 탭으로 돌아오시기 바랍니다. 이제 SSH 접속을 위한 Client 준비는 완료되었습니다.

SSH 사용 준비 2

Key pair 준비

원격지의 컴퓨터에 로그인하여 명령을 하달하기 위해서는 접속자가 로그인 권한이 있는 사용자임을 증명해야 합니다. 다양한 로그인 방법이 존재하지만 저희 클라우드는 가장 강력한 보안을 자랑하는 SSH Key 로그인 방식을 사용합니다.
SSHkeydiagram
SSH Key 로그인은 비대칭 키 암호화를 사용합니다. 원리가 흥미롭게 느껴진다면 수론 및 추상대수학 강의를 수강해보시길 바랍니다. SSH Key pair에서는 Private key와 Public key, 두 Key들이 하나의 쌍을 이룹니다. Private key는 열쇠에 해당하며 로그인을 하려는 사용자가 지니고 있습니다. Public key는 자물쇠에 해당하며, 접속시 로그인을 해야하는 서버에 채워져 있습니다. 자물쇠는 반드시 pair를 이루는 열쇠로만 열 수 있습니다.
1-2
SSH 로그인에 사용할 Key pair를 생성하거나 등록하기 위해 Compute 탭 하의 Key Pairs 페이지로 이동하여 주십시오.
2-3
Create Key Pair 버튼을 클릭하여 새 Key pair를 생성할 수 있습니다.
3-2
생성할 Key pair의 이름을 입력한 뒤 Create Key Pair 버튼을 클릭하여 주십시오.
4-2
새 Key pair가 생성된 뒤 웹 브라우저를 통해 Private key가 다운로드 됩니다.
1-3
생성된 Key 이름 좌측의 삼각형을 클릭하면 Key에 대한 자세한 정보를 볼 수 있습니다. 클라우드 서버에는 Key pair 중 오직 Public key만 저장이 됩니다. Private key는 서버에 저장되지 않기 때문에 방금 다운로드된 Private key 파일을 삭제하게 되면 Private Key는 영원히 유실되어 버리게 됩니다.

SSH 접속용 Security Group 생성

SSH 통신은 TCP 프로토콜 22번 포트를 사용합니다. 따라서 방화벽 설정을 통해 클라우드 외부로부터 VM 인스턴스 22번 포트에 TCP 프로토콜을 통해 접속하는것을 허용해야 합니다.
2-4
Security Group을 생성하기 위해 Network 탭 하의 Security Groups 페이지로 이동하시기 바랍니다.
3-3
Create Security Group 버튼을 클릭하여 새 Security Group을 생성하여 주십시오.
4-3
Name 입력란에 새로 생성할 Security Group의 이름을 입력한 뒤 Create Security Group 버튼을 클릭하여 주시기 바랍니다.
5-2
새로 생성된 Security Group의 Rule 구성을 편집하기 위해 생성된 Security Group의 Manage Rules 버튼을 눌러주십시오.
6-2
우측의 Add Rule 버튼을 클릭하여 새 Rule을 추가해야 합니다.
8-1
Rule 추가 팝업창에서, Rule 항목 중 SSH 옵션을 선택하여 주시기 바랍니다.
9
CIDR 항목은 기본 옵션인 0.0.0.0/0을 그대로 두면 됩니다. 어디서든(0.0.0.0/0) 인스턴스로 SSH 접속을 허용하겠다는 의미입니다. 팝업 창 우측 하단의 Add 버튼을 클릭하면 본 Rule이 Security Group 내에 추가됩니다.
10
Security Group 내에 Rule이 추가된것을 확인할 수 있습니다.

인스턴스 생성

SSH 접속이 가능한 인스턴스를 생성하기 위해서는 인스턴스 생성 시 다음 두 가지 설정을 해 주어야 합니다.

  • Security Group 설정을 통해 TCP 프로토콜로 인스턴스의 22번 포트에 접근하는것을 허용해야 합니다.
  • SSH Key pair를 인스턴스 생성시에 제공해야 합니다.

11-1
인스턴스 생성을 위해 Compute 탭 하의 Instances 페이지로 이동하시기 바랍니다. 우측의 Launch Instance 버튼을 클릭하여 새 VM 인스턴스를 생성할 수 있습니다.
12-1
새 인스턴스 설정 팝업 창에서, Details 탭 에서는 Instance Name 항목에 생성할 인스턴스의 이름을 기입하시기 바랍니다.
13-1
Source 탭에서 생성될 인스턴스의 OS를 선택하여 주십시오.
14-1
Flavor 탭에서 생성될 인스턴스의 사양을 선택하여 주시기 바랍니다.
15-1
Security Groups 탭에서 SSH 접속을 허용하는 Security Group을 추가하여 인스턴스로의 SSH 접속이 이루어 질 수 있도록 합니다.
16-1
default 및 allow-ssh 두 개의 Security Group들이 인스턴스에 적용된 상태입니다.
17-1
Key Pair 탭에서 인스턴스에 제공될 Key pair를 선택할 수 있습니다. 클라우드 시스템에서 생성/등록한 Key pair가 하나 뿐이라면 그 Key pair가 기본적으로 선택되어있는것을 확인할 수 있습니다.
18-1
팝업 창 우측 하단의 Launch Instance 버튼을 클릭하여 SSH 접속 설정이 준비된 인스턴스를 새로 생성합니다.
19-1
VM 인스턴스가 새로 생성되고 있습니다.
20-1
VM 인스턴스의 생성이 완료되었습니다. VM 인스턴스의 IP 주소는 10.130.33.31 입니다. 이제 인스턴스의 IP 주소를 통해 SSH 접속이 가능합니다.

SSH 접속

1-4
SSH 접속을 하기 위해 Bitvise SSH Client를 실행시켜 주시기 바랍니다.
2-5
SSH Key 방식을 통해 로그인하기 위해 우리가 가진 열쇠를 Bitvise SSH Client에 등록해야 합니다. Client key manager 버튼을 클릭하여 주십시오.
3-4
Import 버튼을 클릭하여 다운받은 Private key를 불러올 수 있습니다.
4-4
파일 종류를 All Files로 변환한 뒤 Privte key 파일이 다운로드된 폴더로 이동하여 key 파일을 선택해줍니다.
5-3
Import 버튼을 클릭하여 Private key를 불러옵니다.
6-3
Private key를 불러온 뒤, X 버튼을 클릭하여 Client key manager를 닫아줍니다.
7-1
Bitvise SSH Client 프로그램의 Login 탭에서, VM 인스턴스로의 SSH 접속에 필요한 정보들을 기입합니다.

  • Server 란의 Host 항목에는 접속할 대상 인스턴스의 IP 주소를 입력합니다.
  • Authentication 란의 Username 항목에는 인스턴스에 로그인 시 사용할 유저이름인 dgist를 입력합니다.
  • Authentication 란의 Initial method 항목에는 publickey 방식을 선택해 줍니다.
  • Authentication 란의 Client key 항목에는 불러온 Private key를 선택해 줍니다.

정보 입력이 완료되면 좌측 하단의 Log in 버튼을 눌러 VM 인스턴스로의 로그인을 진행합니다.
8-2
Host Key Verification 단계는 접속하고자 하는 컴퓨터(10.130.33.31)이 정말 귀하께서 접속하고자 하는 컴퓨터가 맞는지 확인하고자 합니다. 그것을 위하여 접속하려는 컴퓨터의 Fingerprint 정보를 제공합니다.
9-1
Fingerprint가 정확한지 확인하기 위해서는 VM 인스턴스에서 명령어를 실행해야 합니다. 인스턴스의 콘솔 페이지에서 로그인을 해 주시기 바랍니다. 초기 로그인 정보는 다음과 같습니다.

  • 아이디: dgist
  • 비밀번호: changePassword!

10-1
ssh-keygen -l -E md5 -f <(ssh-keyscan localhost 2>/dev/null) 명령어로 인스턴스의 SSH key fingerprint를 확인할 수 있습니다. 2048 bit RSA MD5 fingerprint를 비교해보기로 합시다.
11-2
RSA MD5 finterprint가 Bitvise 프로그램이 보고한 바와 일치합니다. 이것은 우리가 우연히 다른 컴퓨터로 접속을 시도하는것이 아니라 우리가 접속하고자 하는 VM 인스턴스에 제대로 접속을 시도하고 있다는것을 의미합니다. Accept and Save 버튼을 눌러서 로그인을 계속 진행하도록 합시다. Finterprint 확인에 너무 오랜 시간을 소요한다면 Accept and Save 버튼을 누르더라도 Timeout이 일어납니다. 당황하지 말고 Log in 버튼을 한 번 더 눌러주면 로그인이 진행됩니다.
12-2
VM 인스턴스로의 SSH 로그인이 성공적으로 완료되었습니다. 좌측을 보면 원격지로의 여러가지 접속 옵션들이 나타난것을 확인할 수 있습니다.

SSH 활용

SSH 터미널

13-2
VM 인스턴스에 성공적으로 로그인 한 뒤 Bitvise SSH Client에서 좌측의 New terminal console 버튼을 클릭하면 터미널 창을 뛰워 VM 인스턴스와 상호작용할 수 있습니다.
14-2
터미널 창을 통해 인스턴스에 명령을 내리고 결과물을 보고받는것이 가능합니다.

SFTP

15-2
New SFTP window 버튼은 SFTP 창을 띄웁니다. SFTP는 SSH 통신을 이용하여 파일을 전송하는 프로그램 입니다.
16-2
SFTP 창의 좌측 패널은 현재 사용중인 컴퓨터 상의 폴더를, 우측 패널은 SSH를 통해 접속된 원격지 컴퓨터의 폴더를 보여줍니다. 패널 너머로 파일 혹은 폴더를 드래그 앤 드랍 함으로써 VM 인스턴스로 파일을 전송하거나, 인스턴스로부터 파일을 가져오는것이 가능합니다.

종료

17-3
SSH 사용이 끝난 뒤에는 좌측 하단의 Log out 버튼을 눌러 SSH 연결을 종료할 수 있습니다.

마침

오늘은 Security Group과 SSH Key pair를 통하여 VM 인스턴스를 SSH 접속 가능하도록 설정하고, SSH 접속을 통해 단말 컴퓨터로부터 인스턴스와 직접 상호작용하는 방법에 대해 알아보았습니다. 다음 시간에는 예상치 못한 변화에 대비하여 VM 인스턴스들을 백업하는 방법에 대해 알아보도록 하겠습니다.