접속이 잘되던 ssh 가 접속이 갑자기 안됩니다. Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

1

Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 란 메세지와 접속이 안되고 있습니다.

물론 pem 파일로 접속이 잘되었는데 오늘 갑자기 안됩니다.

외부에서 22,3306 모두 오픈해논상태입니다. 근데 3306포트는 DB 툴로 잘 접속이 되고 있는 상태입니다.

pem 파일 구너한도 chmod 400으로 해논 상태고

아래 명령어로 시도중입니다. (pem 위치는 정확합니다. )

ssh -i "/Users/bk/work/aws_key/tigerbk.pem" ec2-user@ec2-13-*******.ap-northeast-2.compute.amazonaws.com

tigerbk
질문됨 일 년 전17972회 조회
2개 답변
3

안녕하세요

현재 로컬 환경에서 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 가 동일하지 않은 상태인지 확인 하실 수 있습니다.

  1. AWS 콘솔 > EC2 > 접속할 인스턴스 선택 > Connect > EC2 Connect를 통해 접속

  2. 로컬 터미널에서 아래의 명령어를 통해 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 파일의 내용을 수정하여 문제를 해결하실 수 있습니다.

  3. 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

profile picture
답변함 일 년 전
2

안녕하세요,

외부에서 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 사용 설명서에서 확인하실 수 있습니다.

위 답변이 도움이 되셨기를 바랍니다. 감사합니다.

profile picture
답변함 일 년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠