브라우저 기반 SSH 콘솔을 사용하여 내 Lightsail 인스턴스에 액세스할 때 UPSTREAM_ERROR, UPSTREAM_NOT_FOUND 또는 CLIENT_UNAUTHORIZED 오류가 발생하는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 10월 12일

브라우저 기반 SSH 콘솔을 사용하여 Amazon Lightsail 인스턴스에 연결할 때 다음 오류 메시지 중 하나가 표시됩니다.

  • 인스턴스에 오류가 발생하여 연결을 종료했습니다. 다시 시도하거나 고객 지원에 문의하십시오. UPSTREAM_ERROR [515]
  • 오류가 발생하여 인스턴스에 연결하지 못하거나 연결 상태를 유지할 수 없습니다. 이 인스턴스가 방금 시작된 경우 1~2분 후에 다시 시도하십시오. UPSTREAM_NOT_FOUND [519]
  • 로그인에 실패했습니다. 이 인스턴스가 방금 시작된 경우 1~2분 후에 다시 시도하십시오. CLIENT_UNAUTHORIZED [769]

이 오류는 어떻게 해결합니까?

간략한 설명

UPSTREAM_ERROR [515] and UPSTREAM_NOT_FOUND [519] 오류는 SSH를 사용할 때 Lightsail 인스턴스에 연결할 수 없음을 나타냅니다. 이러한 오류의 일반적인 원인은 다음과 같습니다.

  • 인스턴스 부팅 실패, 인스턴스 상태 확인 실패 또는 인스턴스의 리소스 초과 사용률입니다.
  • OS 수준 방화벽이 SSH 포트 액세스를 차단하고 있습니다.
  • 기본 SSH 포트(22) 가 다른 포트로 변경됩니다.
  • SSH 서비스가 다운되었습니다.

CLIENT_UNAUTHORIZED [769] 오류는 Lightsail 인스턴스에 SSH 인증 문제가 있음을 나타냅니다. 이 오류의 일반적인 원인은 다음과 같습니다.

  • /etc/ssh/lightsail_instance_ca.pub의 Lightsail 시스템 키가 잘못 구성되었습니다.
  • Ubuntu 인스턴스를 이전 버전에서 20.04 이상으로 업그레이드했습니다.

해결 방법

인스턴스 부팅 실패, 인스턴스 상태 확인 실패 또는 인스턴스의 리소스 초과 사용률

인스턴스의 상태 확인 지표를 보고 인스턴스가 시스템 상태 확인 또는 인스턴스 상태 확인 또는 인스턴스 상태 확인에 실패했는지 확인합니다.

시스템 상태 확인

시스템 상태 확인이 실패했으면 인스턴스의 기본 하드웨어가 비정상입니다. 이 문제를 해결하려면 인스턴스를 중지한 다음 시작합니다. 이렇게 하면 인스턴스가 정상 하드웨어로 마이그레이션됩니다.

경고: 인스턴스의 퍼블릭 IP 주소는 인스턴스를 중지하고 시작할 때마다 변경됩니다. 인스턴스를 중지하고 시작할 때마다 IP 주소를 동일하게 유지하려면 고정 IP 주소를 연결합니다.

인스턴스 상태 확인

인스턴스 상태 확인이 실패했으면 운영 체제 수준의 문제로 인해 부팅 오류가 발생할 수 있습니다. 또는 CPU 또는 메모리와 같은 인스턴스의 리소스가 과도하게 사용되었을 수 있습니다. 문제 해결 단계는 Lightsail 인스턴스를 응답하지 않게 만드는 일반적인 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.

OS 수준 방화벽이 SSH 포트 액세스를 차단하고 있음

브라우저 기반 SSH 액세스는 Amazon 내부 IP 주소를 사용하여 Lightsail 인스턴스에 연결합니다. Iptables, UFW 등과 같은 OS 수준 방화벽이나 /etc/hosts.deny와 같은 액세스 제어 파일(즉, cPanel 기반 인스턴스의 호스트 액세스 제어)이 IP 주소 집합에 대해서만 SSH 액세스를 허용하고 다른 모든 주소는 거부하는 경우, UPSTREAM_NOT_FOUND [519] 또는 UPSTREAM_ERROR [515] 오류가 발생합니다. 방화벽이 SSH 액세스를 완전히 차단하는 경우에도 동일한 문제가 발생합니다.

이를 해결하려면 다음 중 하나를 수행합니다.

  • 터미널이나 PuTTY 애플리케이션을 사용하여 인스턴스에 대한 SSH 액세스가 작동하면 인스턴스에 로그인하여 방화벽 및 /etc/hosts.deny 파일에서 거부 규칙을 제거합니다.
  • cPanel 인스턴스가 있는 경우 WHM 콘솔에 액세스하여 방화벽 규칙을 제거합니다.
  • 터미널 또는 PuTTY 애플리케이션에서 SSH를 사용하여 인스턴스에 연결할 수 없는 경우 시작 스크립트를 사용하여 방화벽을 비활성화합니다. 시작 스크립트는 인스턴스를 시작하는 동안에만 추가할 수 있습니다. 실행 스크립트를 사용하여 OS 수준 방화벽, Iptables 및 UFW를 비활성화하려면 다음을 수행합니다.

1.    Amazon Lightsail 콘솔을 엽니다.

2.    인스턴스의 수동 스냅샷을 생성합니다.

3.    스냅샷 탭의 수동 스냅샷에서 새 스냅샷 옆에 있는 점 세 개를 선택합니다.

4.    새 인스턴스 만들기를 선택합니다.

5.    이전 인스턴스와 동일한 가용 영역을 선택합니다.

6.    시작 스크립트 추가를 선택한 후 다음 스크립트를 추가합니다.

참고: 다음 예제에서는 UFW 방화벽을 비활성화하고 iptable 체인 또는 방화벽 규칙을 모두 플러시하고 /etc/hosts.deny 파일의 이름을 변경하여 비활성화합니다.

sudo ufw disable
sudo iptables -F
sudo mv /etc/hosts.deny /etc/hosts.deny_backup
sudo touch /etc/hosts.deny
sudo systemctl enable sshd
sudo systemctl restart sshd

7.    새 인스턴스 플랜을 선택하거나 이전 인스턴스와 동일한 플랜을 사용합니다.

8.    인스턴스 이름을 입력한 다음 인스턴스 만들기를 선택합니다.

새 인스턴스가 실행되기 시작한 후 10분에서 15분 정도 기다린 다음 브라우저 기반 SSH 콘솔을 사용하여 인스턴스에 연결해 봅니다.

참고: 이전 인스턴스에 고정 IP 주소가 있는 경우 새 인스턴스에서 사용할 수 있습니다. 고정 IP 주소를 분리한 다음 네트워킹 탭에서 새 인스턴스에 연결합니다. 자세한 내용은 Amazon Lightsail의 고정 IP 주소를 참조하십시오.

SSH 서비스가 다운된 경우

SSH 서비스가 인스턴스에서 실행 중이거나 활성 상태가 아닌 경우 SSH 연결이 실패하고 UPSTREAM_NOT_FOUND [519] 오류가 발생합니다. 이 문제를 해결하려면 Lightsail 인스턴스에 대한 AWS Systems Manager 세션 관리자 서비스를 구성하십시오. 세션 관리자를 구성한 후 SSH 서비스 없이 인스턴스에 액세스한 다음 SSH 문제를 해결합니다.

SSH 문제에 대한 기본 문제 해결 단계는 다음과 같습니다.

  • OS 배포에 따라 /var/log/auth.log 또는 /var/log/secure 파일의 SSH 인증 로그를 검토하여 오류를 식별합니다.
  • SSH 구성 파일 구문을 테스트한 다음 오류를 수정합니다.
sudo sshd -t
sudo systemctl restart sshd

Lightsail 시스템 키 /etc/ssh/lightsail_instance_ca.pub의 구성이 잘못되었습니다.

Lightsail은 브라우저 기반 SSH 액세스를 활성화하기 위해 시스템 키 /etc/ssh/ightsail_instance_ca.pub을 사용합니다. 이 파일이 누락되면 SSH 인증이 실패하고 CLIENT_UNAUTHORIZED [769] 오류가 발생합니다. SSH 구성 파일 /etc/ssh/sshd_configTrustedUserCAKeys 파라미터에 Lightsail 시스템 키가 지정되지 않은 경우에도 동일한 오류가 발생합니다.

터미널 또는 PuTTY 애플리케이션을 통한 인스턴스에 대한 SSH 연결이 작동하면 인스턴스에 로그인하여 /etc/ssh/sshd_config 파일이 있는지 그리고 ssh-rsa 키가 포함되어 있는지 확인합니다.

파일이 누락된 경우 다음 단계에 따라 파일을 다시 생성합니다.

1.    다음 명령을 실행하고 명령 출력에 ssh-rsa 키가 있는지 확인합니다.

sudo cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa

2.    명령이 출력에서 ssh-rsa 키를 반환하는 경우 다음 명령을 실행하여 /etc/ssh/lightsail_instance_ca.pub에 복사합니다.

sudo sh -c "cat /var/lib/cloud/instance/user-data.txt | grep ^ssh-rsa > /etc/ssh/lightsail_instance_ca.pub"
    sudo sh -c "echo >> /etc/ssh/sshd_config" 
    sudo sh -c "echo 'TrustedUserCAKeys /etc/ssh/lightsail_instance_ca.pub' >> /etc/ssh/sshd_config"
    sudo systemctl restart sshd

3.    1단계에서 ssh-rsa 키를 가져오지 못하거나 터미널 또는 PuTTY 애플리케이션을 사용하여 인스턴스에 SSH를 연결할 수 없는 경우 인스턴스의 수동 스냅샷을 만들고 해당 스냅샷으로 새 인스턴스를 시작합니다. Lightsail 시스템 키는 인스턴스 시작 시 서버에 자동으로 추가됩니다.

이전 Ubuntu 버전을 20.04 이상으로 업그레이드했습니다.

Ubuntu 20.04 이상을 실행하는 인스턴스의 경우 CA(인증 기관)가 ssh-rsa 알고리즘을 사용하여 인증서에 서명하도록 허용해야 합니다. 그렇지 않으면 인증에 실패하고 CLIENT_UNAUTHORIZED [769] 오류가 발생합니다. CA는 Ubuntu 20.04 인스턴스에서 기본적으로 ssh-rsa 알고리즘을 사용할 수 있습니다. 하지만 이전 Ubuntu 버전을 20.04로 업그레이드하는 경우에는 CA를 수동으로 허용해야 합니다. 이를 위해서는 다음을 수행합니다.

1.    터미널 또는 PuTTY 애플리케이션과 같은 SSH 클라이언트를 사용하여 인스턴스에 연결합니다.

2.    SSH 구성 파일(/etc/ssh/sshd_config)을 엽니다.

2.    CASignatureAlgorithms 줄에 ssh_rsa를 추가합니다. 다음 예제에서는 ssh_rsa를 추가하도록 수정한 후의 CASignatureAlgorithms 줄을 보여줍니다.

CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

3.    다음 명령을 실행하여 sshd 서비스를 다시 시작합니다.

$ sudo systemctl restart sshd

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?