공부/프로그래밍

[AWS] ssh 접속이 안될 경우(timeout)

demonic_ 2019. 1. 22. 09:03

AWS 를 등록하고 인스턴스를 생성해서 ssh에 접속하려고 하는데 계속 접속이 안된다.


인터넷에 찾아보면 대부분 보안그룹을 등록하라고만 나오는데, 실제로 똑같이 해보아도 안되었다.

(인스턴스를 생성할 때 기본설정에 ssh 22 포트등록이 포함되어 있다)


그 외 다양하게 허용을 해봐도 안되는건 마찬가지였다.



$ ssh -vvv -i "membership_ediya.pem" centos@[아마존 public DNS]

OpenSSH_7.9p1, LibreSSL 2.7.3

debug1: Reading configuration data /Users/astrology/.ssh/config

debug1: Reading configuration data /etc/ssh/ssh_config

debug1: /etc/ssh/ssh_config line 48: Applying options for *

debug1: Connecting to [아마존 public DNS] port 22.



그래서 계속 생성하고 실패하기를 몇번, 아무래도 VPC 설정과 관련해 문제가 있는것 같아 수정을 보기로 했다.


계정이 생성되면 기본으로 설정되는 VPC 가 있는데, 관련해서 Subnet(서브넷), Routing Table(라우팅 테이블), Internet Gateway(인터넷 게이트웨이) 등이 생성된다.


각각의 역할은 다음과 같다.



VPC: 

Virtual Private Cloud (가상 사설 클라우드)

클라우드 환경 위에 내부망을 생성할 수 있고, 외부침입을 차단하는 용도도 가능하며 public ip로 두는 경우 외부와의 연결도 가능하다.

private network를 생성할 떄는 ip 대역은 rfc1918을 지켜야하며 CIDR 형식으로 입력해주어야 한다.

(AWS 의 defauilt VPC의 CIDR은 172.31.0.0/16 이다.)



Subnet:

CIDR 블락이 여러 IP가 모인 그룹이라면 이것을 여러개 네트워크로 나누는 것을 서브넷이라고 한다.



Routing Table:

VPC 내의 네트워크 트래픽을 전달하는 역할을 한다.



Internet Gateway:

VPC에 붙여 외부망과 연결해주는 역할을 한다.



VPC 를 생성하면 대체로 Subnet, Routing Table, Internet Gateway 이 자동생성되는 경우가 많다. 만약 생성하지 않았다면 직접 생성하여 연결하면 된다(마우스 클릭으로 생각보다 연결이 쉽다.)


여기서 살펴봐야 하는것은 Routing Table 이다. 여기에선 기본설정이 다음그림처럼 되어있다.

기본으로 설정되어 있는 것의 Routes를 살펴보면 2가지가 등록되어 있다. 

여기서 0.0.0.0/0 와 Internet Gateway 의 연결이 없다면 외부에서 접근이 불가능하다.


(인터넷 게이트웨이와 연결되 있는 라우터)

(연결되지 않았던 상태일때의 라우터)



초반에 설정할때 잘 몰라 인터넷 게이트웨이와 연결되어 있는 라우터를 삭제한 것이 문제였다.


설정하고 나니 접속이 잘된다.