흰 스타렉스에서 내가 내리지

AWS EC2 그리고 SSH 본문

DevOps

AWS EC2 그리고 SSH

주씨. 2024. 7. 29. 14:53
728x90

SSH

Secure Shell 프로토콜로, 네트워크 프로토콜 중 하나이다. 

클라이언트(컴퓨터) 와 서버(컴퓨터) 가 통신할 때 쓴다. 

보통 패스워드 인증과 RSA 공개키 암호화 방식으로 연결한다. 

AWS 는 기본으로 RSA 공개키 암호화 방식으로 연결이 된다.

 

EC2 에 접속이 안 돼요

1. public IP 로 접속을 하였는가? private IP 로 접속을 하지는 않았는가?

2. security group 에 내 클라이언트 IP 가 허용되어 있는가?

3. EC2 인스턴스가 퍼블릭 서브넷에 위치해 있는가? 프라이빗 서브넷에 있지는 않은가?

 

publuc subnet 인지 어떻게 확인해요?

해당 서브넷이 연결된 라우팅 테이블을 확인한다. 

Routes 에 0.0.0.0/0 igw-xxxxx 를 확인한다. 

vpc 탭으로 가서, 라우팅 테이블 항목에서 인터넷 게이트웨이 항목이 0.0.0.0 으로 지정되어 있는지 확인한다. 

 

 

++ 

vpc 에 NACL 항목도 막으려면 막을 수 있는데 대부분 Any open 으로 허용되어 있다. 

NACL 은 특정 IP 를 막는다거나 그럴 떄 사용한다. 

 

 

SSH 를 이용한 EC2 접속 원리

keypair 를 설정하고 EC2 인스턴스를 생성한다. 

나는 pem 파일명을 devops-demo.pem 으로 설정하였다.

 

ssh -i "devops-demo.pem" ec2-user@43.203.209.155

 

위 명령어를 입력하면 터미널에서 ec2 인스턴스에 접속할 수 있다. 

Amazon Linux 의 user name 은 ec2-user 이고, @ 뒤에는 인스턴스의 public IPv4 주소를 써주면 된다. 

 

 

그러나 UNPROTECTED PRIVATE KEY FILE 이라고 나온다. 

이것은 pem 파일의 권한 허용이, 너무 많이 허용이 되어 있어서, 보안적으로 너무 많이 오픈되어 있다고 경고를 주는 것이다. 

그래서 강제로 권한 허용을 바꾸에 해야 접속을 허용하게 되어있다. 

이는 600 혹은 400 으로 권한 설정을 해주면 된다. 

 

chmod 400 devops-demo.pem

접속 성공

 

 

netstat -lntp

 

netstat -lntp 명령어는 현재 리슨 상태인 TCP 포트를 표시하고, 각 포트와 연결된 프로그램 정보를 함께 보여준다. 

이 명령어를 실행하면 시스템에서 현재 활성화된 서버 프로그램과 그 포트들을 확인할 수 있다. 

 

위 이미지에서 확인해 보면, 22번 포트에 대해 리스닝하고 있는 것을 볼 수 있다. 

그렇기 때문에 ssh 로 접속을 할 수 있었던 것이다.

 

 ps -ef | grep ssh

 ps -ef | grep ssh  명령어는 현재 실행 중인 프로세스 중에서 'ssh' 라는 문자열을 포함하는 프로세스를 찾기 위해 사용된다. 

 

사실 ssh 자체가 프로그램이다. 

sshd 라는 ssh 데몬 프로그램이 떠있다는 뜻이다. 

 

 

key pair 를 통해서 어떻게 접속을 할 수 있었는가?

ls -al

 

.ssh 라는 폴더가 보인다. 

 

 

.ssh 폴더 안에는 authorized keys 라는 파일이 만들어져 있다. 

이 파일 안 내용을 우리는 SSH RSA Public Key 라고 한다. 

 

public key 는 정보를 암호화하는 키이고, private key 는 그것을 복호화 하는 키이다. 

 

ssh-keygen

위 명령어를 사용하면 ssh key pair 를 만들어 줄것이다. 

 

혹은 ssh 키를 생성해주는 사이트도 있다. 

https://8gwifi.org/sshfunctions.jsp

 

Online Generate SSH keys algorithm RSA,DSA,ECDSA

Generate SSH Keys Online Your Support Matters! Instead of directly asking for donations, I'm thrilled to offer you all nine of my books for just $9 on leanpub By grabbing this bundle you not only help cover my coffee, beer, and Amazon bills but also play a

8gwifi.org

 

 

ec2 인스턴스에 적용시켜보자. 

 

public key 를 복사하여, 인스턴스 내 authorized_keys 파일에 붙여준다. 

 

 

그리고 다른 pem 파일을 생성한다. 

 

 

 

 

권한 허용을 바꿔주고 접속을 시도해보면, 접속에 성공한다. 

 

 

키는 메모리에 로드해 주는 기능도 있다. 

ssh-add test-key.pem

 

위 명령어를 실행하면 현재 나의 세션에 키가 계속 붙어있게 된다. 

'DevOps' 카테고리의 다른 글

AWS Configure 설정  (0) 2024.07.30
terraform 설치하기  (0) 2024.07.30
Terraform 기본  (0) 2024.07.27
DevOps 엔지니어의 역할  (0) 2024.07.27
DevOps 란 무엇인가  (0) 2024.07.27