AWS*AmazonWebService

AWS EC2 SSH로 연결하기

앎:: 2021. 4. 2. 16:24
반응형

 

개요 : AWS EC2에 SSH (windows에 설치된 putty로) 연결하기

public & private 키의 개념과 ssh 자체를 이해하지 못한 상태에서 다른 글들의 guide를 보다보니 해매게 되었습니다.

문제상황 : EC2 생성 시 받은 PEM파일로 PUTTY로 변환해서 접속하려 할때 오류 발생.

오류 내용 :

server refused ?

Putty Fatal Error

No supported authentication methods avialable (server sent:publickey,gssapi-keyex,gssapi-with-mic) 발생하나

AWS instance console의 connect (연결) 에서 연결되는 browser ssh 화면은 정상 접속되는 경우

준비 :

EC2 생성시 받게되는 .pem 파일은 private 키입니다.

이미 EC2쪽에는 public key가 등록되어 있고 저장된 private key로 접속하는게 정상 작동입니다.

원인 추측 :

허나 어떤 문제인지 모르겠으나, 생성 시에 받은 private 키의 짝이 되는 public 키가 ec2의 ~/.ssh/authorized_keys에 등록되어 있지 않아 문제가 발생합니다. 원래 수동으로 등록해줘야 하는건지도 모르겠습니다.

해결 방법 :

1. 다운로드 받은 private key (pem)를 c:\users\윈도우계정\.ssh\에 저장합니다.

.ssh 폴더는 생성해야 합니다. (굳이 .ssh가 아니어도됩니다. 원하시는 폴더와 경로 사용하셔도 됩니다.)

.ssh 폴더가 생성될때 폴더를 만들어야 한다는 오류가 발생하면, .ssh.으로 .을 붙이면서 끝내시면 생성됩니다.

2. .ssh 폴더의 권한을 변경 합니다. 우클릭-속성-보안탭-고급-상속 사용 안함-이 개체에서 상속된 사용 권한을 모두 제거합니다.

(리눅스콘솔에서 하라고 나오는 chomode 400 keyfile 과 같은 과정입니다.)

상기 작업을 진행하면,

warning : unprotected private key file

xxx.pem are too open.

It is required that your pricate key files are NOT accessible by othres.

This private key will be ingnored.

bad permission

이런 오류가 해결됩니다.

원인 : key의 보안이 취약해서 모두가 까볼수있는 상태라 key로 사용 못해 라는 의미입니다.

그래서 현재의 윈도우계정에게만 권한을 부여한 겁니다.

3. putty 설치 시 함께 설치되는 putty gen을 열고,

.ssh 의 ec2생성 시 다운받은 private.pem 파일을 열어 ppk(putty의 key format)로 변경할 겁니다.

conversion을 클릭 - ec2생성 때 받은 privatekey.pem 을 클릭 - key가 로드되고, key finger, key comment가 확인 됩니다.

정상적이라면 key comment에 imported-openssh-key 가 적혀있을 겁니다.

뭔가 새로 생성한 key라면 rsa-날짜 이런식으로 적혀있을겁니다.

여기서 몇몇 블로그에서 generate를 누르라고 되어있는데, 이걸 누르시면 새로운 키 쌍이 생성 됩니다.

새로운 키쌍을 생성하셔도 잘못된건 아니지만, 이 경우, AWS console에서 새로운 키로 생성된 public 키를 import하는 과정을 추가로 진행해야 합니다. 귀찮죠.. 새로운 키 pair생성하여 등록하는 방법은 추후 업로드하겠습니다.

generate를 누르지 마시고, save private key를 누릅니다. 이는 단순하게 private.pem을 private.ppk로 바꾼 겁니다.

.ssh폴더에 저장하고 저장한 private.ppk에도 권한 작업합니다.

4. putty를 켜고,

ubuntu의 경우는 ubuntu@DNS나 IP주소

aws linux2의 경우는 ec2-user@DNS나 IP주소 를 입력하고

좌측 트리구조에서 Connection - SSH - Auth - Private key file for authentication 에서 browse... 클릭하여 위의 private.ppk를 로드합니다.

다시 좌측 트리구조의 Sesssion에서 Saved Sessions의 밑 빈칸에 설정명을 적으시고, save 누르세요. (로드와 ip등을 적는 과정을 설정으로 저장)

open 누르시면, 연결됩니다.

5. 연결되지 않고, server refused key, No supported ... 오류가 발생하는 경우

ec2쪽에 public key가 등록되지 않은 겁니다.

ㄱ. aws console의 instance 를 클릭하여 connect - EC2 instance connet , Session manager , SSH Client중에 INstance Connect 에서 Connect 누르면 browser에서 ssh ternminal이 실행됩니다.

ㄴ. putty gen에서 pem 로딩시 나오는 key 내용을 복사합니다. ssh-rsa로 시작하고 imported-openssh-key 로 끝납니다.

ㄷ. cd .ssh

ㄹ. ls 누르시면 authorized_keys 파일 확인 가능

ㅁ. vi authorized_keys

ㅂ. ㄴ.에서 복사한 key내용을 붙여넣습니다.

ㅅ. esc키를 누르고, :wq를 입력하고 저장하고 닫습니다.

6. putty에서 저장된 설정명 - load - open 눌러 다시 실행해보시면 접속 가능할겁니다.

비고 : 추후 캡처등을 추가해서 설명을 자세히 입력할 예정입니다.

반응형