문제 상황
ec2를 생성하고 키 페어 .pem 인 공개키를 받게 되는데 이거를 잘 저장하고 사용하다가 접속 에러가 났다
가능한 원인들
- EC2 인스턴스의 퍼블릭 키가 변경되었거나, 올바른 키가 등록되지 않음
- EC2 인스턴스의 보안 그룹에서 SSH(22번 포트)가 허용되지 않음 -> 보안 그룹 설정은 잘 됌
- EC2에 연결된 IAM 역할이 SSH 접속을 막고 있음
- EC2 인스턴스가 키 페어 없이 생성되었거나, 올바른 키가 등록되지 않음 -> 키페어는 잘 등록이 되어있음
- 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 주소
끝!
'Bakend' 카테고리의 다른 글
Nginx 활용한 https 설정하기 ! (0) | 2025.04.10 |
---|---|
ec2 + git action 개발 버전 ci/cd - git action workflow 생성 (2) (0) | 2025.03.14 |
ec2 + git action 개발 버전 ci/cd - 프리티어 ec2 생성 (1) (0) | 2025.03.12 |