AWS에서는 이런 문제가 발생하는 원인으로 다음과 같이 말합니다.
- 인스턴스에서 운영 체제 내의 파일 권한이 올바르지 않습니다.
- AMI에 잘못된 사용자 이름을 사용하여 연결하려고 할 경우
- authorized_keys 파일에 잘못된 SSH 퍼블릭 키(.pub) 파일이 있습니다.
이 외에도 보안 그룹 설정을 잘못 해놨거나 안해놓은 경우 에러가 발생할 수 있습니다.
저는 ~/.ssh 디렉토리에 pem 키를 복사해두었기 때문에, 아래와 같이 권한을 설정했습니다. 다른 디렉토리에 파일이 있는 경우, 경로를 적절하게 변경해주세요.
chmod 600 ~/.ssh/pem키이름
ssh config 파일을 키를 관리하고 있기 때문에, config 파일 권한도 변경해야했습니다.
(ssh config 파일을 사용하고 있지 않다면, 이 단계는 필요없지만, 자주 사용하게 되는 키는 ssh config에서 관리하도록 설정해두면 좋습니다.)
chmod 700 ~/.ssh/config
권한 설정을 했는데도, 계속 오류가 발생한다면 아래의 방법을 시도해보세요.
ssh config에서 키를 관리하도록 설정한다면, AMI에 적합한 사용자 이름으로 연결해야합니다.
아래와 같이 config 파일을 설정해놓으셨다면, config 파일에서 User 부분을 확인해보세요.
# Apartment parking service
Host host명
HostName 탄력적 IP
User ec2-user
IdentityFile ~/.ssh/apartment.pem
AMI | 사용자 이름 |
---|---|
CentOs AMI | cetos 또는 ec2-user |
Debian AMI | admin |
Fedora AMI | fedora 또는 ec2-user |
RHEL AMI | ec2-user 또는 root |
SUSE AMI | ec2-user 또는 root |
Ubuntu AMI | ubuntu |
Oracle AMI | ec2-user |
Bitnami AMI | bitnami |
인스턴스를 눌러 보안탭의 인바운드 규칙을 확인해보자.
SSH 유형이면서 22 포트를 가진 항목이 AWS EC2에 터미널로 접속할 때는 의미한다. 이 때 전체 오픈(0.0.0.0/0, ::/0)을 해두면, 어느 곳에서든 접속이 가능하다. 하지만 보안상 위험하다. 그래서 특정 IP에서만 가능하게 설정해두게 하면 좋다. 근데 이렇게 설정하면, 특정장소에서만 접속이 가능하다.
만약 집에서 하다가 카페에서 하려고 하니 안된다면, 보안그룹에 규칙을 추가해야한다. 유형: SSH, 포트: 22
로 설정하고, 내 IP를 선택하면 자동으로 현재 있는 곳의 IP를 선택해준다. 자주 작업하는 곳이 아니라면, 위험할 수 있으니 작업 후에는 삭제해주자.
1) 탄력적 IP를 할당받은 후,
2) ssh config로 키를 관리하기 위해 ~/.ssh/
디렉토리에 pem 파일을 옮겨 놓고
3) ssh config에 등록한 서비스명
으로 EC2에 접속하려 하는데 에러 발생
(캡쳐를 안하고 터미널을 종료해서 다른 블로그에서 캡쳐 사진을 가져왔습니다.
참고: https://ourcstory.tistory.com/37)
"스프링 부트와 AWS로 혼자 구현하는 웹 서비스"를 보면서 AWS 사용법을 익혔다. AWS에 Root user로 로그인해서 사용할 때는 별 문제 없이 사용했다. 근데 이번에는 한이음 프로젝트에서 AWS 클라우드 서버를 지원받아서 AMI user로 로그인을 해서 사용했는데, 같은 방식으로 사용하려니 문제가 생겼다.
AMI가 다르다보니 사용자 이름도 다르게 해야하는데, 그걸 몰랐다.
위의 문제 원인에서 2번이 원인이었다. 그래서 User 이름을 변경해서 해결했다.
# Apartment parking service
Host apartment
HostName 할당받은 탄력적 IP
User ec2-user
IdentityFile ~/.ssh/apartment.pem
User ec2-user
→ User ubuntu
)# Apartment parking service
Host apartment
HostName 할당받은 탄력적 IP
User ubuntu
IdentityFile ~/.ssh/apartment.pem