- 최신
- 최다 투표
- 가장 많은 댓글
안녕하세요
현재 로컬 환경에서 EC2 인스턴스에 SSH 접속을 시도할 때, Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 라는 에러 메세지와 함께 접속할 수 없는 문제를 겪고 계신 것으로 이해했습니다.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
라는 에러가 발생하는 원인은 크게 3가지로 정리할 수 있습니다.
a. private key의 권한 및 경로 문제
ssh에 접속할 때 private key의 경로를 정확히 지정하지 않았거나, private key의 권한이 올바르게 설정되어 있지 않을 때 해당 에러가 발생할 수 있습니다.
b. AMI의 username 문제
EC2 인스턴스를 설치할 때 선택한 AMI에 따라 default username이 달라집니다.
질문자님께서 사용중이신 AMI가 무엇인지는 확인할 수 없으나, ec2-user를 default username으로 사용하는 AMI는 다음과 같습니다:
- Amazon Linux 2023 / Amazon Linux 2 / Amazon Linux
- CentOS
- Fedora
- RHEL
- SUSE
- Oracle
이 외의 AMI를 사용하셨다면 아래의 링크(오류: 서버에서 키 거부 또는 지원되는 인증 방법이 없음)를 통해 확인하실 수 있습니다.
[+] 참고: "오류: 서버에서 키 거부 또는 지원되는 인증 방법이 없음" (AWS documentation)(한글), https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingPuTTY
c. EC2 인스턴스 내에 private key에 맞는 public key가 정확히 입력되어 있지 않은 문제
EC2 인스턴스의 public key가 private key와 동일하지 않은 경우 해당 에러가 발생할 수 있습니다.
이 때, 아래와 같은 순서를 통해 authorized_keys 의 내용을 확인 하시고 이를 통해 public key 와 private key 가 동일하지 않은 상태인지 확인 하실 수 있습니다.
-
AWS 콘솔 > EC2 > 접속할 인스턴스 선택 > Connect > EC2 Connect를 통해 접속
-
로컬 터미널에서 아래의 명령어를 통해 OpenSSH private key에 대한 OpenSSH public key를 확인
ssh-keygen -f tigerbk.pem -y
3. EC2 Connect를 통해 접속한 인스턴스 내에서 아래의 명령어를 통해 authorized_keys 파일의 내용(public key) 확인cat ~/.ssh/authorized_keys
이 때 2번의 결과와 3번의 결과가 동일하지 않다면 authorized_keys 파일의 내용을 수정하여 문제를 해결하실 수 있습니다. -
C2 Connect를 통해 접속한 인스턴스 내에서 authorized_keys 파일 내용 수정
vi ~/.ssh/authorized_keys
후,i
를 눌러 작성 기능을 활성화한 뒤 2번 단계에서 출력된 결과를 붙여넣습니다. 또는echo '@@@@@' >> /home/ec2-user/.ssh/authorized_keys
@@@@에는 2번 단계에서 출력된 결과를 입력하시면 됩니다.
[+] 참고: "EC2 인스턴스에 액세스하려고 하면 "권한 거부(publickey)" 또는 "인증 실패, 권한 거부" 오류가 발생합니다. 이 문제를 해결하려면 어떻게 해야 합니까?" (re:Post, KnowledgeCenter)(한글), https://repost.aws/ko/knowledge-center/ec2-linux-fix-permission-denied-errors
안녕하세요,
외부에서 EC2 SSH 접속 시
-
프라이빗 키 파일(.pem)의 경로와 권한을 정확히 설정했고
-
보안그룹 인바운드 규칙에서 22번 포트를 개방했음에도
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
에러가 발생한다면
연결을 시도하는 EC2 인스턴스의
1) 적절하지 못한 퍼블릭 IPv4 주소
2) 적절하지 못한 퍼블릭 IPv4 DNS 이름
3) 키 파일(.pem) 내용의 의도하지 않은 손상 또는 변경
위 3가지 항목들을 원인으로 의심할 수 있습니다.
문제 해결을 위해 다음과 같이 시도해볼 수 있습니다.
1. 퍼블릭 IPv4 주소를 이용한 EC2 연결
-
퍼블릭 IPv4 DNS 이름으로 연결이 불가능할 경우, 해당 EC2 인스턴스의 퍼블릭 IPv4 주소를 통해 연결을 시도할 수 있습니다.
-
EC2 대시보드에서 EC2의 퍼블릭 IPv4 주소를 확인한 후 DNS 이름이 아닌 퍼블릭 IPv4 주소로 SSH 접속 명령어를 수행합니다.
ssh -i "/Users/bk/work/aws_key/tigerbk.pem" ec2-user@<퍼블릭 IPv4 주소>
2. 신규 키페어 생성
-
외부 로컬 환경에서 ssh-keygen(표준 OpenSSH 설치 시 제공되는 도구)을 이용해 새 키 페어(RSA 및 ED25519 유형)을 생성합니다. ssh-keygen의 설치를 확인한 후, 터미널(또는 명령 프롬프트)에서 다음 명령어를 순서대로 입력합니다.
ssh-keygen -t rsa -m pem (키가 생성될 때까지 Enter 입력) mv id_rsa tigerbk.pem mv id_rsa.pub public_key
-
EC2 대시보드에 접속하여 EC2 인스턴스를 중지합니다.
-
인스턴스의 중지를 확인한 후, [작업] - [인스턴스 설정] - [사용자 데이터 편집]을 선택합니다.
-
사용자 데이터 편집 대화 상자에 아래 스크립트를 복사 및 붙여넣기합니다. (사용자명을 ec2-user와 같은 사용자 이름으로 바꿉니다. 퍼블릭 키를 ssh-keygen을 이용해 생성한 퍼블릭 키(public_key) 내용으로 교체합니다. "ssh-rsa"로 시작하여 전체 퍼블릭 키 내용을 입력해야 합니다.)
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [users-groups, once] users: - name: 사용자명 ssh-authorized-keys: - 퍼블릭 키
-
[저장]을 선택하고 EC2 인스턴스를 시작합니다.
-
EC2 인스턴스를 다시 중지합니다.
-
EC2 인스턴스의 중지를 확인한 후, [작업] - [인스턴스 설정] - [사용자 데이터 편집]을 선택합니다.
-
사용자 데이터 편집 대화 상자에서 모든 내용을 삭제 후 저장합니다.
-
EC2 인스턴스를 시작합니다.
-
SSH 명령어를 통해 EC2 인스턴스의 연결을 재시도합니다. (재시작 과정에서 EC2 인스턴스의 퍼블릭 IPv4 주소가 변경됩니다. 변경된 퍼블릭 IPv4 주소를 이용해 연결을 시도합니다.)
-
신규 키 페어 생성 및 적용과 관련된 더욱 자세한 설명은 지식 센터 "최초 시작 후 SSH 키 페어를 분실했다면 Amazon EC2 인스턴스에 어떻게 연결해야 하나요?"를 참고 바랍니다.
인스턴스 연결 문제를 해결하는 더욱 자세한 방법은 Amazon EC2 사용 설명서에서 확인하실 수 있습니다.
위 답변이 도움이 되셨기를 바랍니다. 감사합니다.
관련 콘텐츠
- 질문됨 2년 전
- 질문됨 3달 전