메뉴
Amazon Elastic Compute Cloud
User Guide for Linux Instances

인스턴스 연결 문제 해결

다음은 인스턴스에 연결하는 중에 발생할 수 있는 문제와 오류 메시지입니다.

Windows 인스턴스와 관련하여 추가적인 도움이 필요하면 Windows 인스턴스용 Amazon EC2 사용 설명서Windows 인스턴스 문제 해결을 참조하십시오.

Amazon EC2 forum에서 답을 검색하고 질문을 올릴 수도 있습니다.

인스턴스 연결 중 오류 발생: 연결 시간 초과

인스턴스에 연결하려 할 때 Network error: Connection timed out 또는 Error connecting to [instance], reason: -> Connection timed out: connect라는 오류 메시지가 표시되면 다음과 같이 하십시오.

  • 보안 그룹 규칙을 확인합니다. 퍼블릭 IPv4 주소의 인바운드 트래픽을 적절한 포트로 허용하는 보안 그룹 규칙이 필요합니다.

    1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

    2. 탐색 창에서 [Instances]를 선택한 다음 인스턴스를 선택합니다.

    3. [Description] 탭에서 [Security groups] 옆에 있는 [view rules]를 선택하여 적용되는 규칙 목록을 표시합니다.

    4. Linux 인스턴스: 해당 컴퓨터에서 포트 22(SSH)로의 트래픽을 허용하는 규칙이 있는지 확인합니다.

      Windows 인스턴스: 해당 컴퓨터에서 포트 3389(RDP)로의 트래픽을 허용하는 규칙이 있는지 확인합니다.

      보안 그룹에 단일 IP 주소의 인바운드 트래픽을 허용하는 규칙이 있으며, 컴퓨터가 회사 네트워크에 있거나 ISP(인터넷 서비스 공급자)를 통해 연결하는 경우, 이 주소는 고정되지 않을 수 있습니다. 대신 클라이언트 컴퓨터에서 사용하는 IP 주소 범위를 지정합니다. 보안 그룹에 이전 단계에서 설명한 인바운드 트래픽을 허용하는 규칙이 없을 경우 보안 그룹에 추가합니다. 자세한 내용은 인스턴스에 네트워크 액세스 권한 부여 단원을 참조하십시오.

  • [EC2-VPC] 서브넷의 라우팅 테이블을 확인합니다. VPC 외부로 지정된 모든 트래픽을 VPC의 인터넷 게이트웨이로 보내는 경로가 필요합니다.

    1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

    2. 탐색 창에서 [Instances]를 선택한 다음 인스턴스를 선택합니다.

    3. [Description] 탭에서 [VPC ID]와 [Subnet ID]의 값을 기록합니다.

    4. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

    5. 탐색 창에서 [Internet Gateways]를 선택합니다. VPC에 인터넷 게이트웨이가 연결되어 있는지 확인합니다. 또는 [Create Internet Gateway]를 선택하여 인터넷 게이트웨이를 만듭니다. 인터넷 게이트웨이를 선택한 후 [Attach to VPC]를 선택하고 지침에 따라 VPC에 연결합니다.

    6. 탐색 창에서 [Subnets]를 선택한 후 해당 서브넷을 선택합니다.

    7. [Route Table] 탭에서 대상 위치로 0.0.0.0/0 경로가 있으며, VPC의 대상으로 해당 인터넷 게이트웨이가 있는지 확인합니다. 그렇지 않을 경우 라우팅 테이블의 ID(rtb-xxxxxxxx)를 선택하여 라우팅 테이블의 [Routes] 탭으로 이동한 후 [Edit], [Add another route]를 차례로 선택하고 [Destination]에 0.0.0.0/0을 입력한 후, [Target]에서 인터넷 게이트웨이를 선택하고 [Save]를 선택합니다.

      IPv6 주소를 이용해 인스턴스에 연결하는 경우 인터넷 게이트웨이를 가리키는 모든 IPv6 트래픽(::/0)에 대한 경로가 있는지 확인합니다. 그렇지 않으면 대상 위치로 ::/0 경로를, 대상으로 인터넷 게이트웨이를 추가합니다.

  • [EC2-VPC] 네트워크 ACL(액세스 제어 목록)을 검사하여 서브넷 유무를 확인하십시오. 네트워크 ACL은 로컬 IP 주소에서 적절한 포트를 통해 수신되는 인바운드와 아웃바운드 트래픽을 모두 허용해야 합니다. 기본 네트워크 ACL은 인바운드와 아웃바운드 트래픽을 모두 허용합니다.

    1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

    2. 탐색 창에서 [Subnets]를 선택하고 해당 서브넷을 선택합니다.

    3. [Summary] 탭에서 [Network ACL]을 찾아 ID(acl-xxxxxxxx)를 선택합니다.

    4. 네트워크 ACL을 선택합니다. [Inbound Rules] 탭에서 규칙이 해당 컴퓨터로부터의 트래픽을 허용하는지 확인합니다. 허용하지 않을 경우 해당 컴퓨터로부터의 트래픽을 차단하는 규칙을 삭제하거나 수정합니다.

    5. [Outbound Rules] 탭에서 규칙이 해당 컴퓨터로의 트래픽을 허용하는지 확인합니다. 허용하지 않을 경우 해당 컴퓨터로의 트래픽을 차단하는 규칙을 삭제하거나 수정합니다.

  • 컴퓨터가 회사 네트워크에 있을 경우 네트워크 관리자에게 내부 방화벽이 해당 컴퓨터의 포트 22(Linux 인스턴스) 또는 포트 3389(Windows 인스턴스)로부터의 트래픽을 허용하는지 여부를 문의합니다.

    컴퓨터에 방화벽이 있을 경우 이 방화벽에서 해당 컴퓨터의 포트 22(Linux 인스턴스) 또는 포트 3389(Windows 인스턴스)로부터의 트래픽을 허용하는지 확인합니다.

  • 인스턴스에 퍼블릭 IPv4 주소가 있는지 확인합니다. 퍼블릭 IP 주소가 없을 경우 인스턴스와 탄력적 IP 주소를 연결할 수 있습니다. 자세한 내용은 탄력적 IP 주소 단원을 참조하십시오.

  • 인스턴스에서 CPU 부하를 확인합니다. 서버 과부하가 발생했을 수 있습니다. AWS는 Amazon CloudWatch 메트릭 및 인스턴스 상태 등과 같은 데이터를 자동으로 제공하므로, 이러한 정보를 사용하여 인스턴스에 대한 CPU 부하를 확인하고 필요할 경우 부하 처리 방법을 조정할 수 있습니다. 자세한 내용은 CloudWatch를 사용해 인스턴스 모니터링하기을 참조하십시오.

    • 부하가 가변적이면 Auto ScalingElastic Load Balancing을 사용하여 인스턴스를 자동으로 확장하거나 축소할 수 있습니다.

    • 부하가 꾸준히 증가하는 경우 더 큰 인스턴스 유형으로 전환할 수 있습니다. 자세한 내용은 인스턴스 크기 조정을 참조하십시오.

IPv6 주소를 사용해 인스턴스에 연결하려면 다음을 확인합니다.

  • 서브넷은 IPv6 트래픽(::/0)을 인터넷 게이트웨이로 이어주는 경로가 있는 라우팅 테이블과 연결되어야 합니다.

  • 보안 그룹 규칙은 로컬 IPv6 주소의 인바운드 트래픽을 적절한 포트(Linux의 경우 22, Windows의 경우 3389)로 허용해야 합니다.

  • 네트워크 ACL 규칙은 인바운드 및 아웃바운드 IPv6 트래픽을 허용해야 합니다.

  • 이전 AMI에서 인스턴스를 시작한 경우, DHCPv6에 맞게 구성되지 않을 수 있습니다(IPv6 주소가 네트워크 인터페이스에서 자동 인식되지 않습니다). 자세한 내용은 Amazon VPC 사용 설명서인스턴스에서 IPv6 구성하기 단원을 참조하십시오.

  • 로컬 컴퓨터에 IPv6 주소가 있고 IPv6를 사용하도록 컴퓨터를 구성해야 합니다.

오류r: 서버에서 사용자 키를 인식하지 못함

SSH를 사용하여 인스턴스에 연결하는 경우

  • 연결 시 ssh -vvv를 사용하여 자세한 디버깅 정보를 확인합니다.

    Copy
    ssh -vvv -i [your key name].pem ec2-user@[public DNS address of your instance].compute-1.amazonaws.com

    다음 샘플 출력은 서버에서 인식하지 못하는 키를 사용하여 인스턴스에 연결하려 했는지를 확인하는 방법을 보여 줍니다.

    open/ANT/myusername/.ssh/known_hosts).
    debug2: bits set: 504/1024
    debug1: ssh_rsa_verify: signature correct
    debug2: kex_derive_keys
    debug2: set_newkeys: mode 1
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug2: set_newkeys: mode 0
    debug1: SSH2_MSG_NEWKEYS received
    debug1: Roaming not allowed by server
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug2: service_accept: ssh-userauth
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug2: key: boguspem.pem ((nil))
    debug1: Authentications that can continue: publickey
    debug3: start over, passed a different list publickey
    debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
    debug3: authmethod_lookup publickey
    debug3: remaining preferred: keyboard-interactive,password
    debug3: authmethod_is_enabled publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: boguspem.pem
    debug1: read PEM private key done: type RSA
    debug3: sign_and_send_pubkey: RSA 9c:4c:bc:0c:d0:5c:c7:92:6c:8e:9b:16:e4:43:d8:b2
    debug2: we sent a publickey packet, wait for reply
    debug1: Authentications that can continue: publickey
    debug2: we did not send a packet, disable method
    debug1: No more authentication methods to try.
    Permission denied (publickey).

SSH(MindTerm)를 사용하여 인스턴스에 연결하는 경우

PuTTY를 사용하여 인스턴스에 연결하는 경우

  • 프라이빗 키(.pem) 파일이 PuTTY(.ppk)에서 인식하는 형식으로 변환되었는지 확인합니다. 프라이빗 키 변환에 대한 자세한 내용은 PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 단원을 참조하십시오.

    참고

    PuTTYgen에서 프라이빗 키 파일을 불러온 후 Generate가 아니라 Save Private Key를 선택합니다.

  • AMI에 적합한 사용자 이름을 사용하여 연결하고 있는지 확인합니다. PuTTY Configuration 창에서 Host name 상자에 사용자 이름을 입력합니다.

    • Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.

    • RHEL AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.

    • Ubuntu AMI의 경우 사용자 이름은 ubuntu 또는 root입니다.

    • Centos AMI의 경우 사용자 이름은 centos입니다.

    • Fedora AMI의 경우 사용자 이름은 ec2-user입니다.

    • SUSE의 경우 사용자 이름은 ec2-user 또는 root입니다.

    • ec2-userroot를 사용할 수 없는 경우 AMI 공급자에게 문의하십시오.

  • 해당 포트로의 인바운드 트래픽을 허용할 인바운드 보안 그룹 규칙이 있는지 확인합니다. 자세한 내용은 인스턴스에 네트워크 액세스 권한 부여 단원을 참조하십시오.

오류: 호스트 키를 찾을 수 없음. 권한 거부(퍼블릭 키) 또는 인증 실패, 권한 거부

SSH를 사용하여 인스턴스에 연결할 때 Host key not found in [directory], Permission denied (publickey) 또는 Authentication failed, permission denied 오류 중 하나가 발생하는 경우 AMI에 적합한 사용자 이름을 사용하여 연결하고 있는지 또한 인스턴스에 대한 올바른 프라이빗 키(.pem) 파일을 지정했는지 확인합니다. MindTerm 클라이언트의 경우 Connect To Your Instance 창에서 User name 상자에 사용자 이름을 입력합니다.

적합한 사용자 이름은 다음과 같습니다.

  • Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.

  • RHEL AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.

  • Ubuntu AMI의 경우 사용자 이름은 ubuntu 또는 root입니다.

  • Centos AMI의 경우 사용자 이름은 centos입니다.

  • Fedora AMI의 경우 사용자 이름은 ec2-user입니다.

  • SUSE의 경우 사용자 이름은 ec2-user 또는 root입니다.

  • ec2-userroot를 사용할 수 없는 경우 AMI 공급자에게 문의하십시오.

인스턴스를 시작할 때 선택한 키 페어에 해당하는 프라이빗 키를 사용하고 있는지 확인합니다.

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 인스턴스를 선택합니다. [Description] 탭에서 [Key pair name]의 값을 확인합니다.

  3. 인스턴스를 시작할 때 키 페어를 지정하지 않은 경우 인스턴스를 종료하고 새 인스턴스를 시작하여 키 페어를 지정할 수 있습니다. 이 인스턴스가 사용하던 인스턴스이지만 해당 키 페어의 .pem 파일이 없을 경우 키 페어를 새 것으로 바꿀 수 있습니다. 자세한 내용은 프라이빗 키를 분실했을 때 Linux 인스턴스에 연결하는 방법 단원을 참조하십시오.

고유한 키 페어를 만든 경우 키 생성기가 RSA 키를 만들도록 설정되어 있는지 확인합니다. DSA 키는 허용되지 않습니다.

Permission denied (publickey) 오류가 반환되고 위의 어느 것도 적용되지 않는 경우(예를 들어, 전에는 연결할 수 있었지만), 인스턴스의 홈 디렉토리에서의 권한이 변경되었을 수 있습니다. /home/ec2-user/.ssh/authorized_keys에 대한 권한은 소유자로만 제한되어야 합니다.

인스턴스에서 권한을 확인하려면

  1. 인스턴스를 중지하고 루트 볼륨을 분리합니다. 자세한 내용은 인스턴스 중지 및 시작인스턴스에서 Amazon EBS 볼륨 분리 단원을 참조하십시오.

  2. 현재의 인스턴스와 동일한 가용 영역에서 임시 인스턴스를 시작하고(현재의 인스턴스에 사용한 것과 비슷하거나 동일한 AMI 사용) 루트 볼륨을 임시 인스턴스에 연결합니다. 자세한 내용은 Amazon EBS 볼륨을 인스턴스에 연결 단원을 참조하십시오.

  3. 임시 인스턴스에 연결하고 마운트 지점을 생성한 후 연결한 볼륨을 마운트합니다. 자세한 내용은 Amazon EBS 볼륨을 사용할 수 있도록 만들기 단원을 참조하십시오.

  4. 임시 인스턴스에서 연결된 볼륨의 /home/ec2-user/ 디렉토리의 권한을 확인합니다. 필요하다면 다음과 같이 권한을 조정합니다.

    Copy
    [ec2-user ~]$ chmod 600 mount_point/home/ec2-user/.ssh/authorized_keys
    Copy
    [ec2-user ~]$ chmod 700 mount_point/home/ec2-user/.ssh
    Copy
    [ec2-user ~]$ chmod 700 mount_point/home/ec2-user
  5. 볼륨을 마운트 해제하고 임시 인스턴스에서 분리한 다음 원본 인스턴스에 다시 연결합니다. 루트 볼륨에 올바른 이름을 지정해야 합니다(예: /dev/xvda).

  6. 인스턴스를 시작합니다. 더 이상 필요하지 않은 경우, 임시 인스턴스를 종료할 수 있습니다.

오류: 보호되지 않는 프라이빗 키 파일

다른 사용자의 읽기 및 쓰기 작업으로부터 프라이빗 키 파일을 보호해야 합니다. 프라이빗 키를 본인 이외의 다른 모든 사람이 읽거나 쓸 수 있는 경우 SSH는 키를 무시하고 다음과 같은 경고 메시지를 표시합니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '.ssh/my_private_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/my_private_key.pem
Permission denied (publickey).

인스턴스에 로그인할 때 이와 비슷한 메시지가 표시되면 오류 메시지의 첫 줄을 살펴보고 인스턴스에 올바른 퍼블릭 키를 사용하고 있는지 확인합니다. 위의 예에서는 프라이빗 키 .ssh/my_private_key.pem 및 파일 권한 0777이 사용되어 모든 사람에게 이 파일에 대한 읽기 또는 쓰기가 허용됩니다. 이 권한 수준은 전혀 보호되지 않는 수준이므로 SSH에서는 이 키를 무시합니다. 오류를 해결하려면 프라이빗 키 파일 경로를 대체하는 다음 명령을 실행합니다.

Copy
[ec2-user ~]$ chmod 0400 .ssh/my_private_key.pem

오류: 서버에서 키 거부 또는 지원되는 인증 방법이 없음

PuTTY를 사용하여 인스턴스에 연결하려 할 때 Error: Server refused our key 또는 Error: No supported authentication methods available 오류 중 하나가 발생하면 AMI에 적합한 사용자 이름을 사용하여 연결하고 있는지 확인합니다. PuTTY Configuration 창에서 User name 상자에 사용자 이름을 입력합니다.

적합한 사용자 이름은 다음과 같습니다.

  • Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.

  • RHEL AMI의 경우 사용자 이름은 ec2-user 또는 root입니다.

  • Ubuntu AMI의 경우 사용자 이름은 ubuntu 또는 root입니다.

  • Centos AMI의 경우 사용자 이름은 centos입니다.

  • Fedora AMI의 경우 사용자 이름은 ec2-user입니다.

  • SUSE의 경우 사용자 이름은 ec2-user 또는 root입니다.

  • ec2-userroot를 사용할 수 없는 경우 AMI 공급자에게 문의하십시오.

또한 프라이빗 키(.pem) 파일을 PuTTY(.ppk)에서 인식되는 형식으로 올바르게 변환했는지도 확인해야 합니다. 프라이빗 키 변환에 대한 자세한 내용은 PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 단원을 참조하십시오.

Safari 브라우저에서 MindTerm 사용 중 오류 발생

Safari 웹 브라우저를 사용 중일 때 MindTerm을 사용하여 인스턴스에 연결하려는 경우 다음 오류가 발생할 수 있습니다.

Error connecting to your_instance_ip, reason: 
 —> Key exchange failed: Host authentication failed

브라우저의 보안 설정을 업데이트하여 AWS Management Console에서 비안전 모드에서 Java 플러그인을 실행하는 것을 허용해야 합니다.

Java 플러그인을 비안전 모드에서 실행할 수 있도록 설정하기

  1. Safari에서 Amazon EC2 콘솔을 열어 놓은 채 [Safari], [기본 설정], [보안]을 차례로 선택합니다.

  2. [Plug-in Settings]를 선택합니다(Safari가 구 버전일 경우 [Manage Website Settings]).

  3. 왼쪽에서 [Java] 플러그인을 선택한 후 [현재 열려 있는 웹 사이트] 목록에서 AWS Management Console URL을 찾습니다. 관련 목록에서 비안전 모드에서 실행을 선택합니다.

  4. 메시지가 표시되면 경고 대화 상자에서 [신뢰]를 선택합니다. [완료]를 선택하여 브라우저로 돌아갑니다.

Mac OS X RDP 클라이언트 사용 중 오류 발생

Microsoft 웹 사이트의 원격 데스크톱 연결을 사용하여 Windows Server 2012 R2 인스턴스에 연결하려는 경우 다음 오류가 발생할 수 있습니다.

Remote Desktop Connection cannot verify the identity of the computer that you want to connect to.

Apple iTunes 스토어에서 Microsoft Remote Desktop 앱을 다운로드한 후 이 앱을 사용하여 인스턴스에 연결합니다.

인스턴스를 ping할 수 없음

ping 명령은 일종의 ICMP 트래픽—입니다. 따라서 인스턴스를 ping할 수 없는 경우, 인바운드 보안 그룹 규칙에서 모든 소스, 즉 컴퓨터 또는 명령을 실행하는 인스턴스에서 오는 Echo Request 메시지에 대한 ICMP 트래픽을 허용하는지 확인합니다. 인스턴스에서 ping 명령을 실행할 수 없는 경우, 아웃바운드 보안 그룹 규칙에서 모든 대상, 즉 ping을 시도 중인 호스트에 보내는 Echo Request 메시지에 대한 ICMP 트래픽을 허용하는지 확인합니다.