[ AWS ] SSH 접속 오류 및 해결

5tr1ker·2023년 7월 10일
0

aws

목록 보기
3/3
post-thumbnail

RSA Key 오류

SSH 접속 오류 [ WARNING : REMOTE HOST IDENTIFICATION HAS CHANGED ]

리눅스 서버에서 서버간 통신을 하기위해 사용하는 SSH 서비스는 상기 오류에 대해 많이 보셨을 수 있습니다.

메세지 내용

요약하면 원격 호스트의 식별 정보가 변경되었으며 기존에 등록되어있던 RSA Key와는 달라 누군가 접속 정보를 바꾸어 정보를 가져가는 man-in-the-middle attack에 유의하라는 경고입니다..

해당 경고를 제거하려면 /root/.ssh/known_hosts 에 올바른 Host key를 추가하여 제거할 수 있습니다.

SSH Known_host 란? 명칭과도 같이 알려진 호스트 정보를 말하며 , 쉽게 말하면 자신> 이 ssh를 통해 접속했다면 해당 서버는 key를 받아 로컬에 저장하는 것을 말합니다.

따라서 발생된 SSH 접속 오류는 IP는 동일하지만 목적지 서버가 바뀌었거나 , VMWare 와 같은 가상 컴퓨터의 IP는 동일하지만 실제 서버가 바뀌었을 경우에 나오는 경고성 알립니디ㅏ.

해결 방법

어떤 방법을 사용해도 문제를 해결할 수 있습니다.

방법 1 . [root@host~]# ssh-keygen -R 192.168.0.2(대상 서버 IP)

간단히 ssh-keygen -R [ AWS 서버의 주소 ] 를 이용해서 known_hosts 의 내용을 갱신할 수 있습니다.

방법 2 . [root@host~]# rm /root/.ssh/known_hosts

known_hosts 파일을 지우는 방법도 존재합니다. 해당 파일이 삭제되어도 다시 ssh로 접속할 때 파일이 생성됩니다.

방법 3 . [root@host~]# vi /root/.ssh/known_hosts

vi 편집기를 이용해서 대상 아이피로 이동하여 dd를 눌러 행을 삭제할 수 있습니다.
IP주소 위에 dd 를 입력하면 등록된 RSQ key를 삭제할 수 있습니다. wq 저장은 필수입니다.

위의 방법을 수행후 재접속하면 Are you sure you want to continue connecting (yes/no)? 메세지가 나오는데 yes를 입력하여 접속을 하면 됩니다.

부록 . Are you sure you want to continue connecting (yes/no)?

sshd 명령어

[root@host~]# service sshd restart

[root@host~]# systemctl restart sshd

known_hosts 호스트에 등록 후 sshd 서비스를 재시작하지 않으면 기존 로드된 내용을 참고하기 때문에 계속 메세지가 나오므로 sshd를 재시작해주어야합니다.

그렇게 하면 REMOTE HOST IDENTIFICATION HAS CHANGED - RSA key 오류를 해결할 수 있습니다.

만약 Are you sure you want to continue connecting (yes/no)? 메세지가 나올경우 sshd 서비스를 재시작하면 메세지를 없엘 수 있습니다. 해당 경고는 단순 경고가 아니라 IP 변조를 통해 자신의 서버에 접속 정보가 유출될 수 있는걸 방지하는 경고문입니다.

메모리 부족

AWS EC2 에서 프리티어인 t4g.micro 인스턴스를 사용하면 램이 1GB 밖에 할당되지 않습니다. 이는 메모리 부족현상이 자주 발생할 정도로 적은 양의 메모리인데 이를 해결하기 위한 방법으로는 swaf file 을 잉ㅇ한 swap memory를 할당할 수 있습니다.

AWS EC2 의 메모리 부족현상으로는 서버를 실행되어 있는 상태임에도 서버에 접속하지 못하는 상황이 될 수 있습니다.

Swap file

EC2 램 메모리가 가득 찼을 경우 실제 디스크의 용량을 이용하여 부족한 메모리를 대체할 공간을 swap memory라고 합니다.

보통 swap memory는 할당된 램 메모리의 2배 또는 그 이상을 추천하고 있으며 만약 1GB 메모리의 인스턴스를 할당하고 있다면 2GB 를 할당해야 합니다. 그 이상인 4GB나 8GB로 하지 않는 이유는 추가로 축적될 파일들의 용량을 고려해야 하기 때문입니다.

swap 메모리는 RAM을 대체하기는 힘든데 실제 디스크 용량을 이용하여 부족한 RAM 메모리 공간을 할당하는 것이기 때문에 주기억장치인 RAM 에 직접 접근하는 것 보다는 속도라 느리기 때문입니다

해결방법

스와 메모리를 다음과 같은 명령어로 할당합니다.

sudo dd if=/dev/zero of=/swapfile bs=128M count=16

dd 명령어는 파일 복사 및 변환 관련 유닉스 명령 유틸리티입니다.
/dev/zero 는 데이터 스토리지 초기화 관련 파일입니다.
bs * count 으로 총 2GB 의 swapfile을 설정해주었습니다.

sudo mkswap /swapfile

mkswap 명령어를 이용하여 swapfile을 추가할 swap 공간을 생성합니다.

/etc/fstab 에디터 실행

sudo vi /etc/fstab

파일의 맨 끝 다음죽에 다음 명령어 작성

/swapfile swap swap defaults 0 0

etc/fstab 은 파일시스템 정보를 저장하는 곳으로 파티션 변경 및 디스크 추가 시에 이 파일에 등록해야 자동으로 마운트가 됩니다.

자세한 설명은 다음 링크 를 조회해주세요.

free

명령어를 이용하여 EC2 메모리가 잘 실행됐는지 확인할 수 있습니다.

이는 실제 메모리 1GB에 추가로 swap memory 2GB를 할당한 것으로 속도는 느리지만 1GB를 사용했을 때 보다 서버에 부담은 덜 가게 됩니다.

swap 메모리 할당 전후 비교

Linux에서 top 명령어를 이용하여 현재 cpu , 메모리 할당량을 프로세스 별로 확인을 할 수 있습니다.
여기서 shift + p 를 누르면 메모리 사용순으로 내림차순 정렬을 할 수 있습니다.

  • top : cpu, 메모리 할당량을 프로세스 별로 확인할 수 있게 하는 명령어
  • shift + p : 메모리를 많이 사용하는 순으로 정렬해주는 명령어

  • swap 메모리 할당 전 -

MiB swap 메모리를 사용하지 않고 , 주 메모리 공간도 거의 사용되고 있는 것을 확인할 수 있습니다. ( 93% )
RAM 사용량이 27MB 정도 남았는데 추가로 프로세스가 할당되면 특정 프로세스는 실행하지 못할 가능성이 높습니다.

  • swap 메모리 할당 후 -

랭 사용량이 30MB ~ 50MB 정도 남게 되면 SWAP 메모리를 사용하는 모습을 확인할 수 있습니다.

참고

참고 블로그 1 : https://kingsong.tistory.com/127
참고 블로그 2 : https://kth990303.tistory.com/361

profile
https://github.com/5tr1ker

0개의 댓글