접속이 잘되던 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
gefragt vor 7 Monaten11592 Aufrufe
2 Antworten
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
beantwortet vor 7 Monaten
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
beantwortet vor 7 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen