문제 상황 

ec2를 생성하고 키 페어 .pem 인 공개키를 받게 되는데 이거를 잘 저장하고 사용하다가 접속 에러가 났다

 

가능한 원인들

  1. EC2 인스턴스의 퍼블릭 키가 변경되었거나, 올바른 키가 등록되지 않음
  2. EC2 인스턴스의 보안 그룹에서 SSH(22번 포트)가 허용되지 않음 -> 보안 그룹 설정은 잘 됌
  3. EC2에 연결된 IAM 역할이 SSH 접속을 막고 있음
  4. EC2 인스턴스가 키 페어 없이 생성되었거나, 올바른 키가 등록되지 않음 -> 키페어는 잘 등록이 되어있음 
  5. EC2 인스턴스를 재부팅하면서 새 키 페어가 필요해졌을 가능성

아무튼,, 여러 원인들이 있을거 같은데 자꾸 안되길래 새로운 키를 발급해서 적용해보려고 한다. 

 

 

 

1.  새 ssh key 생성 (로컬 환경에서 실행한다. )

ssh-keygen -t rsa -b 4096 -f ~/.ssh/newlyj-ec2key.pem

 

  • -t rsa → RSA 알고리즘 사용
  • -b 4096 → 4096비트 키 길이 설정 (보안 강화)
  • -f ~/.ssh/new-ec2-key.pem → 새 키 파일을 ~/.ssh/ 폴더에 저장
  • 이때 비번 입력창이 나오는데 엔터치면 비번없이 만들어진다

2. 키 권한 설정

(base) ➜  ~ chmod 400 ~/.ssh/newlyj-ec2key.pem

 

 

3. 키 생성 확인

(base) ➜  ~ ls -l ~/.ssh/newlyj-ec2key.pem ~/.ssh/newlyj-ec2key.pem.pub

-r--------  1 leeyeonju  staff  3414  3 12 15:59 /Users/leeyeonju/.ssh/newlyj-ec2key.pem
-rw-r--r--  1 leeyeonju  staff   762  3 12 15:59 /Users/leeyeonju/.ssh/newlyj-ec2key.pem.pub
  • -r-------- (400 권한) → 개인키 (.pem)는 읽기만 가능해야 함
  • -rw-r--r-- (644 권한) → 공개키 (.pub)는 읽기 가능

4. 키 무결성 확인 (rsa 인지 확인)

(base) ➜  ~ ssh-keygen -lf ~/.ssh/newlyj-ec2key.pem

4096 SHA256:vH9XC...............MacBookPro.local (RSA)
  • 4096 → 4096비트로 생성됨 (정상)
  • SHA256:.... → 키 지문 (Fingerprint)
  • (RSA) → RSA 타입인지 확인

5. 등록할 공개키 확인 

(base) ➜  ~ cat ~/.ssh/newlyj-ec2key.pem.pub

ssh-rsa AAAAB3.................@iyeonjuui-MacBookPro.local

 

  • ssh-rsa → RSA 키
  • AAAAB3... → 키 내용
  • leeyeonju@iyeonjuui-MacBookPro.local → 키를 생성한 사용자

 

그럼 공개키 생성이 끝났다. ec2에 등록해보자 

 

ec2에 기존에 사용하던 인스턴스에 들어감 -> 연결 -> ec2 인스턴스 연결 탭 에서 연결로 들어가면 ec2에 접속이 된다. 

지금 나는 인스턴스는 문제가 없고 ssh 연결만 안되는거기 때문에 잘 접속이 됐다.

 

6. ec2 인스턴스에 접속해 authorized_keys 파일에 공개 키 추가

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ssh-rsa AAAAB3... (생략) ... leeyeonju@iyeonjuui-MacBookPro.local" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

 위에서 조회한 공개키를 붙여넣어주면 된다. 

 

7. 등록확인 

ubuntu@ip-내ip :~$ ls -ld ~/.ssh
drwx------ 2 ubuntu ubuntu 4096 Mar 11 10:27 /home/ubuntu/.ssh
ubuntu@ip-내ip :~$ ls -l ~/.ssh/authorized_keys
-rw------- 1 ubuntu ubuntu 1510 Mar 12 07:07 /home/ubuntu/.ssh/authorized_keys

 

drwx------ (700 권한)이면 정상 

-rw------- (600 권한)이면 정상

 

8. authorized_keys 파일에 키가 정상적으로 저장되었는지 확인 

ubuntu@ip-172-31-40-60:~$ cat ~/.ssh/authorized_keys
ssh-rsa  .....................== leeyeonju@iyeonjuui-MacBookPro.local

 

 

9. ssh 서비스 확인 

sudo systemctl restart sshd  # SSH 서비스 재시작
sudo systemctl status sshd   # SSH 상태 확인

 

ubuntu@ip-----:~$ sudo systemctl restart sshd
Failed to restart sshd.service: Unit sshd.service not found.
ubuntu@ip-----:~$ sudo systemctl list-units --type=service | grep ssh
  ssh.service                                    loaded active running OpenBSD Secure Shell server

현재 ssh.service는 실행 중(active running)이지만, sshd.service가 아닌 ssh.service로 동작하고 있다고 한다. 

 

ubuntu@ip---------:~$ sudo systemctl restart ssh
Warning: The unit file, source configuration file or drop-ins of ssh.service changed on disk. Run 'systemctl daemon-reload' to reload units.
ubuntu@ip---------:~$ sudo systemctl status ssh
Warning: The unit file, source configuration file or drop-ins of ssh.service changed on disk. Run 'systemctl daemon-reload' to reload units.
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
    Drop-In: /usr/lib/systemd/system/ssh.service.d
             └─ec2-instance-connect.conf
     Active: active (running) since Wed 2025-03-12 07:12:32 UTC; 18s ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 20094 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 20096 (sshd)
      Tasks: 1 (limit: 1129)
     Memory: 1.3M (peak: 1.5M)
        CPU: 15ms
     CGroup: /system.slice/ssh.service
             └─20096 "sshd: /usr/sbin/sshd -D -o AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %u %f -o AuthorizedKeysCommandUser ec2-instance-connect [list>

ssh 서비스 재 시작 후 상태 확인 

현재 ssh.service가 Active: active (running) 상태이며, 포트 22에서 정상적으로 리스닝하고 있다고 한다. 

 

 

 

10. 다시 로컬로 와서 ec2 접속을 위한 키 페어가 생성됐는지 확인 

ase) ➜  ~ ls -l ~/.ssh/*.pem

-r--------  1 leeyeonju  staff  3414  3 12 15:59 /Users/leeyeonju/.ssh/newlyj-ec2key.pem

 

11. 2. EC2의 퍼블릭 IP 확인

1️⃣ AWS 콘솔EC2 대시보드인스턴스 선택
2️⃣ "Public IPv4 address" (퍼블릭 IP 주소) 확인

 

(base) ➜  ~ ssh -i ~/.ssh/newlyj-ec2key.pem ubuntu@public -ip 주소

 

 

 

 

끝!

+ Recent posts