본문 바로가기
  • Masacorgi 's Dev Bloggg
TIL/AWS

EC2 생성 후 SSH 연결 불가 해결

by masacorgi 2025. 3. 12.

 

개인공부용으로 리눅스가 필요해서  프리티어 ec2를 하나 생성하게 되었다.

서울(ap-northeast-2)지역, t2.micro, ubuntu로 생성했으며 생성 당시 22(ssh), 80(http), 443(https) 포트를 열어놓았다.

 

이후 푸티로 진입을 시도하는데 이게 웬걸 서버가 거부하는 것이 아닌가

Server refuesed our key

Disconnected : No supported authentication methods available (server sent: publickey)

찾아보니 주로 SSH 키 관련 문제가 발생할 때 이런 메시지가 뜬다고 한다.

 

 

다음은 구글링과 ai의 도움으로 찾아낸 체크리스트이다.

 

1. 사용자 이름 확인

EC2에서 구동하는 OS별로 초기 사용자 명칭이 다르니 제대로 확인할 것

 

  • Amazon Linux / RHEL  : ec2-user
  • Ubuntu : ubuntu
  • Debian : admin or debian
  • CentOS : centos
  • SUSE Linux : ec2-user or root

 

2. 키페어 파일 제대로 생성했는지 확인

Putty는 .pem파일을 읽지 못하므로 .ppk로 바꿔주는 Puttygen을 사용하는데, 이때 RSA 방식을 체크했는지 확인

 

 

3. EC2인스턴스에서 SSH키가 제대로 설정되어 있는지 확인

AWS 관리 콘솔에서 EC2 인스턴스에 연결,

ls -lah ~/.ssh 입력

 

정상적인 경우 : 

drwx------ 2 ubuntu ubuntu 4.0K Mar 12 12:34 .ssh
-rw------- 1 ubuntu ubuntu  400 Mar 12 12:34 authorized_keys

 

authorized_keys 파일이 없으면 다시 설정해야함

 

4. EC2 보안그룹 확인

AWS 콘솔에서 EC2 -> 보안그룹 -> 인바운드 규칙 확인

포트 22(SSH) 열려있는지 확인

 

 

 

 

나는 여기까지 했는데도 계속 같은 문제가 발생했다.

다음은 SSH 설정파일 확인과 SSH 로그 점검이다.

 

1. EC2 인스턴스 SSH 설정파일 확인

sudo nano /etc/ssh/sshd_config 로 설정파일을 열어보자.

 

아래 항목이 제대로 있어야하나 나는 거의 모든 설정이 주석처리 되어 있었다 왜지?

PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys



PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication no(필요시 yes)

Port 22

 

변경후 재시작

sudo systemctl restart ssh

 

 

이래도 해결되지 않았다..

 

2. SSH 상태, 로그 점검

* 상태점검

sudo systemctl status ssh

active(running)이면 정상작동 중

 

inactive 또는 failed면 문제 발생, 

sudo systemctl restart ssh 로 ssh재시작하거나

sudo systemctl enable ssh 로 다시 활성화

 

* 로그점검

journalctl로 마지막 20줄의 로그를 확인하고 접속 오류 로그를 파악하자

sudo journalctl -u ssh --no-pager | tail -20

 

Permission denied(publickey) 오류가 있으면 키 인증 문제

Connection closed by xxx.xxx.xxx.xxx port 22 오류가 있으면 보안 그룹 또는 방화벽 문제

 

 

나는 이 단계에서 해결됐다. 위 두 오류는 없었지만 로그를 보니

userauth_pubkey : signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

라는 로그메시지가 있었다.

현재 SSH서버가 ssh-rsa 알고리즘을 지원하고있지 않아서 키 인증이 거부되었다는 뜻이다.

 

아까 설정을 추가한 ssh 설정파일에 누락된것이 또 있었나 보다.

sudo nano /etc/ssh/sshd_config로 다시 들어가서

 

PubkeyAcceptedAlgorithms +ssh-rsa
HostKeyAlgorithms +ssh-rsa

두가지를 추가해 주었다.

 

저장후 ssh 재시작

 

 

이 단계에서 해결되었지만 안됐을 시 추가로 시도해 볼 방법들을 소개한다.

 

* AWS 네트워크 ACL에서 SSH 트래픽 허용

ec2 보안그룹이나 네트워크 acl 설정이 ssh 접속을 막고 있을 수도 있음

 

* sudo ufw status 확인, 필요시 sudo ufw allow 22/tcp 실행