일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ansible
- map
- post
- DevOps
- cloud
- gradle
- jdk
- Java
- 액세스회선
- container
- LAN어댑터
- 허브
- Spring
- AOP
- JPA
- 캐시서버
- Set
- Linux
- docker
- 방화벽
- 소켓
- IntelliJ
- sonarQube
- Collection
- STREAM
- Pipeline
- Jenkins
- 라우터
- tomcat
- mybatis
- Today
- Total
거북이-https://velog.io/@violet_evgadn 이전완료
AWS EC2 Instance 접속 & 탄력적 IP 설정 본문
SSH Client Tool Termius 설치
SSH 접속을 수행하는 방법은 다양하다.
가장 원초적인 방법은 CLI 환경에서 "ssh [권한]@[IP Address] -p [Port Number]" 명령어를 통해 SSH Server에 접속하는 것이다.
문제는 여러 개의 서버를 동시에 관리하는 상황이라면 SSH Server에 접속할 때마다 해당 서버에 대한 IP Address, ID, Password, 접속 Port Number 등을 직접 입력해줘야 한다.
명령어를 입력하는 공간이 CLI이기 때문에 명령어 오타 같은 Human Error가 발생할 확률이 높아지며 직관적이지도 않다. 또한 귀찮다.
(IT 업계에서는 "귀찮다"라는 것이 매우 큰 단점으로 간주된다. 실제로 현재 활용되고 있는 여러 Tool 중 귀찮음을 줄이기 위해 개발된 것들이 상당히 많다.)
따라서 CLI가 아닌 GUI를 통해 SSH 접속을 수행하기 위한 많은 Tool이 발표되었다.
아마 이 중 한 번쯤은 들어본 Tool이 "Putty"일 것이다.
하지만 Putty도 GUI치고는 살짝 아쉬운 직관성을 가진다.
그래서 XShell, MobaXterm 등의 조금 더 높은 직관성을 가진 많은 SSH Client Tool이 개발되었다.
필자는 이 중 Windows 및 MacOS 환경 모두 설치 가능한 Termius를 설치해 활용해볼 것이다.
(개인적으로 Termius를 활용하면 똑같은 ID로 Termius에 접속할 경우 설정했던 SSH 접속 정보를 다른 컴퓨터에서도 그대로 활용할 수 있다는 점이 큰 장점으로 느껴졌다)
1. Termius 다운로드
위 사이트로 들어가 Termius 설치 파일은 다운로드한다.
만약 MacOS에서 설치할 거라면 windows 대신 mac-os를 입력해주면 된다.
2. 설치된 파일 실행
설치된 파일을 실행시키면 Termius가 설치된다.
AWS Instance 접속
설치했던 Termius를 활용하여 AWS Instance에 접속해보자.
◎ Public IP & Private IP
AWS를 활용하기 전 간단히 알아야 할 개념이 있는데 바로 공인 IP(Public IP)와 사설 IP(Private IP)이다.
우리가 인터넷을 활용할 때는 기기에서 바로 인터넷의 IP Address로 접속하는 것이 아니다.
Network 구조에 대해 자세히 배우면 알겠지만 Rotuer라는 기기에서 여러 개의 인터넷 사용 가능 기기들을 관리하고 있다. 인터넷을 사용하는 기기들은 Router에 데이터나 이벤트를 전달하고 이 Router가 외부에 있는 실제 인터넷 IP Address에 접근하여 데이터나 이벤트에 대한 처리를 요청하는 방식으로 되어 있다.
즉 인터넷 접속 시 "기기(User) → Router → 실제 인터넷 IP Address" 과정을 통해 접근하는 것이다.
이때 Router와 연결된 여러 가지 기기에 데이터를 전달하거나 전달받을 때 위 사진에서 볼 수 있듯 "사설망"을 활용한다.
여기에서 Public IP와 Private IP가 나뉜다.
Private IP는 오로지 "사설망"에서만 활용 가능한 IP Address이다.
그리고 Public IP는 실제 인터넷 측에서 사설망에 접근하기 위한 IP Address를 의미하는 것이다.
Private IP를 1.1.1.1, Public IP가 2.2.2.2인 기기에서 인터넷을 접속하고 싶다고 가정하자.
이 경우 인터넷은 Router에서 관리하는 기기가 아니라 Router에 데이터를 보내주는 존재로써 Public IP 2.2.2.2를 통해 Router에 접속하여 데이터를 전송해줄 것이다.
이렇게 인터넷 측에서 데이터를 받은 Router는 Private IP 1.1.1.1을 통해 실제 내가 사용하는 기기에 데이터를 전달해줄 것이다.
1. AWS Instance 정보 확인
현재 나는 Local Computer에서 AWS EC2 Server에 접속할 것이다.
당연히 Local Computer와 AWS EC2 Server는 다른 사설망에 존재할 것이다.(실제 AWS에 존재하는 컴퓨터가 Local 컴퓨터가 아닌 이상...)
따라서 Public IPv4 주소를 통해 EC2 Server에 접속할 수 있을 것이다.
2. Termius > Add > New Host 클릭
3. New Host 정보 입력
- Address : SSH Server IP Address
- SSH : SSH 접속에 대한 설정
- Port : Port Number
- Username & Password : SSH 접속을 위한 ID 및 Password
먼저 Address는 이전에 설명했던 대로 Public IP Address가 입력되어야 할 것이다.
AWS EC2 Instance는 SSH 접속을 위한 기본 Port로 22를 열어 놓기 때문에 보안 설정을 변경하지 않았다면 그대로 22를 사용하면 될 것이다.
Username 같은 경우 AWS EC2 Instance를 생성하면 Default로 "ec2-user"라는 Username을 모든 사람에게 공통적으로 할당한다. 따라서 우리도 ec2-user를 입력하면 된다.
여기에서 조금 설정이 복잡한 게 Password이다. 우리는 Instance를 생성할 때 Password 값을 입력한 적은 없었던 것 같은데 도대체 어떤 값을 입력하면 되는 것일까?
Instance 생성 시 "보안"에 대한 언급이 나온 부분이 있다. 바로 키 페어!
키 페어를 새로 생성하며 다운로드한 pem 파일(혹은 ppk 파일)이 바로 Password 역할을 수행하는 것이다.
이전에 저장했던 키 페어를 등록시켜보자.
먼저 SSH > Password > Set a Key를 클릭한다.
그럼 아래 사진과 같은 창이 나올 텐데 왼쪽 위에 있는 New 버튼이나 Create a new key 버튼을 클릭하여 키를 생성하자.
우리가 여기에서 신경 써야 할 것은 "Label" 부분뿐이다.
Label 값 또한 Convetion이나 Rule 같은 것은 딱히 없고 Key의 역할을 잘 설명할 수 있거나 구분만 잘할 수 있게 만든다면 상관없다.
Lable을 지정했다면 "Drag and drop a private key file to import" 부분에 pem 파일을 드래그하거나 "Import from key file"을 클릭하여 직접 pem 파일을 등록시켜주면 된다.
이렇게 Setting을 마치고 오른쪽 위의 "Save" 버튼만 클릭하면 Key가 생성된다.
이렇게 등록된 Key는 Termius 측에서 저장하고 있기 때문에 다시 등록할 필요가 없다.
그래서 생성하는 AWS Instance의 키 페어가 동일하다면 또다시 Key값에 대한 Setting을 할 필요 없이 기존에 존재하던 Key 파일을 사용하면 된다.
4. AWS Instance 접속
설정이 완료되었다. Termius는 따로 저장 버튼을 누르지 않아도 중간 과정이 자동 저장되기 때문에 저장에 대한 스트레스를 가지지 않아도 된다. Hosts에 등록된 생성한 Item을 더블클릭하자.
아마 이런 창이 나올 텐데 생소해 보이지만 사실 매우 친숙한 과정이다.
우리는 이전에 CMD 창에서 SSH 접속을 수행할 때 "known_hosts"라는 파일을 자주 봤었다. 처음 SSH Server에 접속할 때는 known_hosts에 접속 정보를 등록하겠냐는 질문을 했었고 Container를 삭제했다 다시 생성할 경우 known_hosts 파일 때문에 에러가 발생한 적도 있었을 것이다.
SSH 접속을 처음 수행한다면 "known_hosts"라는 파일에 접속할 SSH Server에 대한 정보를 저장해 놓는다.
이후 동일한 SSH Server에 접속을 수행할 때 known_hosts에 등록된 정보가 있는지를 확인하며 등록된 정보가 있을 경우 더욱 수월하게 접속이 가능해지는 것이다.
Add and continue를 눌러 Termius 측의 known_hosts 파일에 접속 정보를 저장하도록 설정하자.
접속 성공!
추가적으로 AWS는 같은 User가 같은 Region에 여러 개의 EC2 Instance를 생성할 경우 생성한 Instance들은 모두 같은 사설망에 존재한다.
그래서 같은 User가 동일한 Region에 만든 EC2 Server 사이에는 Private IP 주소를 통해 접속 가능하다.
Instance 탄력적 IP 주소 생성 및 적용
이제 생성했던 서버를 중지 후 다시 시작시켜보자.
??? 퍼블릭 IPv4 주소가 달라졌다. AWS Instance는 이렇듯 서버를 중지 후 재시작할 때마다 Public IPv4 주소가 바뀐다.
(참고로 Private IPv4 주소는 바뀌지 않는다)
이렇게 Public IPv4 Address가 계속해서 바뀐다면 Termius 접속 정보의 IPv4 Address를 계속해서 수정해줘야 하므로 매우 곤란해질 것이다.
이래서 AWS에서는 탄력적 IP라는 기능을 제공한다.
탄력적 IP란 고정 IP 기능을 의미하는데 서버를 중지 후 다시 시작시켜도 바뀌지 않는 IPv4 Address를 AWS EC2 Instance에 할당해주는 것이다.
이 탄력적 IP는 비용이 들 수도 있는 기능이기에 조금 더 신중하게 사용해야 한다.
탄력적 IP는 1개는 무료로 사용 가능한데, 이때 "할당된 탄력적 IP는 무조건 EC2와 연결되어 있어야 한다"라는 조건이 붙는다. 탄력적 IP 주소를 1개만 할당했더라도 EC2와 연결하지 않았다면 요금이 발생할 수 있다는 점에 유의하자.
1. EC2 > 네트워크 및 보안 > 탄력적 IP 접속 후 탄력적 IP 주소 할당 클릭
2. 아무런 설정도 하지 않고 할당 클릭
태그를 통해 탄력적 IP에 대한 추적이 가능하게 만들 수도 있으나 우리는 탄력적 IP 주소를 1개만 할당할 것이므로 굳이 필요 없으며 다른 설정도 아직은 활용하지 않으므로 지금은 설정할 필요가 없다.
3. 작업 > 탄력적 IP 주소 연결 선택
4. 탄력적 IP를 사용하고 싶은 인스턴스 선택
Instance를 선택하면 자동으로 해당 Instance의 Private IP 주소를 자동으로 입력시켜준다
5. 인스턴스 정보에서 탄력적 IP 주소가 설정되었는지 확인
정상적으로 추가되었다.
이제 이 값을 기존에 Termius에 등록했던 Server IP Address로 입력해보자.
정상 접근 가능하며 Private IP 주소도 이전과 동일함으로 보아 동일한 Instance에 접속했음을 확인할 수 있다.
마지막으로 서버를 중지 후 다시 시작시켜 Termius를 통해 접속해보자.
성공!
참고
위에서 일단 보안 상 중요하다고 생각하는 부분은 대부분 숨겼다고 생각한다.
하지만 다시 검토해보니 AWS EC2 Instance ID 등 미처 지우지 못한 고유 정보가 몇 개 있었다.
혹시나 보안 상 문제가 발생할 수도 있기 때문에 이번 실습에 활용했던 EC2 Instance, Key 파일, 탄력적 IP Address 등 활용한 모든 것들을 지우고 난 뒤 다시 생성하여 다음 실습을 진행할 것이다.
그러니 갑자기 Private IP Address가 바뀌어도 놀라지 말자.
AWS는 보안 상 문제가 발생할 경우 해커들이 서버를 매우 많이 생성해 코인을 채굴하는 등 과도한 요금의 이유가 될 수 있으므로 항상 정보 노출에 대해 주의하자.
'웹 개발 > AWS' 카테고리의 다른 글
AWS EC2로 Jenkin Server 생성 (0) | 2022.11.06 |
---|---|
기본적인 AWS Instance Setting (0) | 2022.11.06 |
AWS Instance 생성 (0) | 2022.11.03 |