실패, 오류 발생 또는 거부되는 Azure Linux VM에 대한 SSH 연결 문제 해결

이 문서는 Linux VM(가상 머신)에 연결하려고 할 때 SSH(Secure Shell) 오류, SSH 연결 실패 또는 SSH 거부로 인해 발생하는 문제를 찾아서 해결하는 데 도움이 됩니다. Linux용 Azure Portal, Azure CLI 또는 VM 액세스 확장을 사용하여 연결 문제를 해결하고 resolve 수 있습니다.

참고

이 문서가 도움이 되었나요? 귀하의 입력은 우리에게 중요합니다. 이 페이지의 피드백 단추를 사용하여 이 문서가 얼마나 잘 작동했는지 또는 어떻게 개선할 수 있는지 알려주세요.

빠른 문제 해결 단계

각 문제 해결 단계 후에 VM에 다시 연결해 보세요.

  1. SSH 구성을 다시 설정합니다.
  2. 사용자의 자격 증명을 다시 설정합니다.
  3. 네트워크 보안 그룹 규칙이 SSH 트래픽 및 역할 할당을 허용하는지 확인합니다.
    • SSH 트래픽을 허용하는 네트워크 보안 그룹 규칙이 있는지 확인합니다(기본적으로 TCP 포트 22).
    • Azure 부하 분산 장치를 사용하지 않고는 포트 리디렉션/매핑을 사용할 수 없습니다.
    • Microsoft Entra ID 사용하여 SSH 로그인을 관리하는 경우 사용자에게 VM 및 관련 리소스가 포함된 리소스 그룹에 Virtual Machine 관리자 로그인 또는 Virtual Machine 사용자 로그인 역할이 할당되어야 합니다. 그렇지 않으면 "권한 거부됨(publickey)" 오류가 수신됩니다. 자세한 내용은 Microsoft Entra 로그인을 사용하는 VM에 대한 역할 할당 구성을 참조하세요.
  4. VM 리소스 상태를 확인합니다.
  5. VM을 다시 시작합니다.
  6. VM을 다시 배포합니다.

자세한 문제 해결 단계 및 설명을 계속 읽어보세요.

SSH 연결 문제를 해결하는 데 사용할 수 있는 방법

다음 방법 중 하나를 사용하여 자격 증명, SSH 구성을 다시 설정하거나 SSH 서비스의 상태 문제를 해결할 수 있습니다.

  • Azure Portal - SSH 구성 또는 SSH 키를 신속하게 다시 설정해야 하며 Azure 도구가 설치되어 있지 않은 경우에 좋습니다.
  • Azure VM 직렬 콘솔 - VM 직렬 콘솔은 SSH 구성에 관계없이 작동하며 VM에 대화형 콘솔을 제공합니다. 실제로 "SSH할 수 없는" 상황은 특히 직렬 콘솔이 해결하는 데 도움이 되도록 설계된 상황입니다. 자세한 내용은 아래를 참조하세요.
  • Azure Portal 통해 명령 실행 사용 - Azure Portal 통해 명령 실행 기능을 사용하여 기본 명령을 실행할 수 있습니다. 출력이 포털로 반환됩니다.
  • Azure CLI - 이미 명령줄에 있는 경우 SSH 구성 또는 자격 증명을 신속하게 다시 설정합니다. 클래식 VM을 사용하는 경우 Azure 클래식 CLI를 사용할 수 있습니다.
  • Azure VMAccessForLinux 확장 - json 정의 파일을 만들고 다시 사용하여 SSH 구성 또는 사용자 자격 증명을 다시 설정합니다.

각 문제 해결 단계 후에 VM에 다시 연결해 보세요. 여전히 연결할 수 없는 경우 다음 단계를 시도합니다.

Azure Portal 사용

이 Azure Portal 로컬 컴퓨터에 도구를 설치하지 않고 SSH 구성 또는 사용자 자격 증명을 다시 설정하는 빠른 방법을 제공합니다.

시작하려면 Azure Portal VM을 선택합니다. 도움말 섹션까지 아래로 스크롤하고 다음 예제와 같이 암호 재설정을 선택합니다.

Azure Portal SS H 구성 또는 자격 증명을 다시 설정하는 스크린샷

SSH 구성 다시 설정

SSH 구성 Reset configuration only 을 다시 설정하려면 이전 스크린샷과 같이 모드섹션에서 를 선택한 다음 업데이트를 선택합니다. 이 작업이 완료되면 VM에 다시 액세스합니다.

사용자에 대한 SSH 자격 증명 다시 설정

기존 사용자의 자격 증명을 다시 설정하려면 이전 스크린샷과 같이 모드 섹션에서 또는 Reset password 를 선택합니다Reset SSH public key. 사용자 이름 및 SSH 키 또는 새 암호를 지정한 다음 업데이트를 선택합니다.

이 메뉴에서 VM에 sudo 권한이 있는 사용자를 만들 수도 있습니다. 새 사용자 이름 및 연결된 암호 또는 SSH 키를 입력한 다음 업데이트를 선택합니다.

보안 규칙 확인

IP 흐름 확인을 사용하여 네트워크 보안 그룹의 규칙이 가상 머신을 오가는 트래픽을 차단하는지 확인합니다. 효과적인 보안 그룹 규칙을 검토하여 인바운드 "허용" NSG 규칙이 존재하고 SSH 포트에 우선 순위가 지정되었는지 확인할 수도 있습니다(기본값 22). 자세한 내용은 효과적인 보안 규칙을 사용하여 VM 트래픽 흐름 문제 해결을 참조하세요.

라우팅 확인

Network Watcher 다음 홉 기능을 사용하여 경로가 트래픽이 가상 머신으로 또는 가상 머신으로 라우팅되는 것을 방지하지 않는지 확인합니다. 효과적인 경로를 검토하여 네트워크 인터페이스에 대한 모든 유효 경로를 확인할 수도 있습니다. 자세한 내용은 효과적인 경로를 사용하여 VM 트래픽 흐름 문제 해결을 참조하세요.

Azure VM 직렬 콘솔 사용

Azure VM 직렬 콘솔은 Linux 가상 머신용 텍스트 기반 콘솔에 대한 액세스를 제공합니다. 콘솔을 사용하여 대화형 셸에서 SSH 연결 문제를 해결할 수 있습니다. 직렬 콘솔을 사용하기 위한 필수 구성 요소를 충족하는지 확인하고 아래 명령을 시도하여 SSH 연결 문제를 추가로 해결합니다.

SSH 서비스가 실행 중인지 확인

서비스 상태 검사 대부분의 현재 Linux 배포판에서 사용할 수 있는 다음 명령을 사용합니다.

sudo systemctl status sshd.service

다음 출력 예제를 참조하세요. 출력의 줄에서 Active 서비스 상태 확인합니다. 출력에는 수신 대기 중인 포트 및 IP 주소도 표시됩니다.

user@hostname:~$ sudo systemctl status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-23 17:44:36 UTC; 1 day 3h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 829 (sshd)
      Tasks: 1 (limit: 9535)
     Memory: 5.1M
     CGroup: /system.slice/ssh.service
             └─829 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Jun 23 17:44:35 ubu2004 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on 0.0.0.0 port 22.
Jun 23 17:44:36 ubu2004 sshd[829]: Server listening on :: port 22.
Jun 23 17:44:36 ubu2004 systemd[1]: Started OpenBSD Secure Shell server.

이 명령을 사용할 수 없거나 예기치 않은 결과를 반환하는 경우 사용 가능한 다른 명령을 사용합니다. 명령을 루트로 사용 ss 하거나 명령을 통해 sudo SSH 서비스가 VM에서 실행되고 있는지 확인할 수 있습니다.

다음 예제에서는 을 통해 sudo명령을 실행하는 ss 방법을 보여줍니다.

sudo ss --listen --tcp --process --numeric | grep sshd

참고

명령이 ss 더 이상 사용되지 않으며 최신 배포판에서 항상 사용할 수 있는 것은 아니므로 명령을 netstat 사용하는 것이 좋습니다.

출력이 있는 경우 SSH가 실행되고 있습니다. 다음 출력 예제를 참조하세요.

$ sudo ss -ltpn | grep sshd
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=829,fd=3))
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=829,fd=4))

-ltpn 는 인수의 단축된 형식입니다 --listen --tcp --process –numeric . 출력은 SSHD 프로세스 829가 IPv4 및 IPv6 주소 모두에서 수신 대기하고 있음을 보여 줍니다.

SSH가 실행 중인 포트 확인

위의 명령 출력은 SSHD 프로세스가 포트 22에서 수신 대기 중임을 보여줍니다. SSHD 프로세스가 다른 포트에서 실행되도록 구성된 경우 포트가 출력에 표시됩니다. 표준 구성 파일에서 변경이 수행되었는지 검사 다음 명령 중 하나를 사용하여 기본 구성 파일 /etc/ssh/sshd_config 검사합니다.

grep -i port /etc/ssh/sshd_config

또는

grep -i listen /etc/ssh/sshd_config

출력은 다음과 같습니다.

Port 22

출력에서 로 # 시작하는 모든 줄은 주석이며 무시해도 됩니다. 아무 것도 반환되지 않거나 줄이 주석인 경우 기본 구성이 사용됩니다. 기본 구성은 포트 22에서 시스템의 모든 IP 주소를 수신 대기하는 것입니다.

Azure Portal 통해 실행 명령 사용

직렬 콘솔을 통해 명령을 실행할 수 없는 경우(예: SSH 키만 인증에 사용되는 경우) 명령 실행 기능을 사용하여 명령을 실행하고 출력을 볼 수 있습니다. 이전에 직렬 콘솔에서 실행된 모든 명령은 Azure Portal 명령 실행 섹션에서 비대화형으로 실행할 수 있습니다. 출력은 Azure Portal 반환됩니다. 를 사용하여 sudo 명령 실행 컨텍스트에서 명령을 실행할 필요가 없습니다.

Azure CLI 사용

아직 설치하지 않은 경우 최신 Azure CLI 를 설치하고 az login을 사용하여 Azure 계정에 로그인합니다.

사용자 지정 Linux 디스크 이미지를 만들고 업로드한 경우 Microsoft Azure Linux 에이전트 버전 2.0.5 이상이 설치되어 있는지 확인합니다. 갤러리 이미지를 사용하여 만든 VM의 경우 이 액세스 확장이 이미 설치되고 구성되어 있습니다.

SSH 구성 다시 설정

처음에 SSH 구성을 기본값으로 재설정하고 VM에서 SSH 서버를 다시 부팅해 볼 수 있습니다. 사용자 계정 이름, 암호 또는 SSH 키는 변경되지 않습니다. 다음 예제에서는 az vm user reset-ssh 를 사용하여 에서 명명된 myVMmyResourceGroupVM에서 SSH 구성을 다시 설정합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm user reset-ssh --resource-group myResourceGroup --name myVM

사용자에 대한 SSH 자격 증명 다시 설정

다음 예제에서는 az vm user update를 사용하여 의 VM myVMmyResourceGroup에 지정된 값으로 myPassword에 대한 myUsername 자격 증명을 다시 설정합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm user update --resource-group myResourceGroup --name myVM \
     --username myUsername --password myPassword

SSH 키 인증을 사용하는 경우 지정된 사용자에 대한 SSH 키를 다시 설정할 수 있습니다. 다음 예제에서는 az vm access set-linux-user를 사용하여 의 VM myVMmyResourceGroup에서 ~/.ssh/id_rsa.pub 라는 myUsername사용자에 대해 저장된 SSH 키를 업데이트합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm user update --resource-group myResourceGroup --name myVM \
    --username myUsername --ssh-key-value ~/.ssh/id_rsa.pub

VMAccess 확장 사용

Linux용 VM 액세스 확장은 수행할 작업을 정의하는 json 파일에서 읽습니다. 이러한 작업에는 SSHD 재설정, SSH 키 재설정 또는 사용자 추가가 포함됩니다. Azure CLI를 사용하여 VMAccess 확장을 호출하지만 원하는 경우 여러 VM에서 json 파일을 다시 사용할 수 있습니다. 이 방법을 사용하면 지정된 시나리오에 대해 호출할 수 있는 json 파일의 리포지토리를 만들 수 있습니다.

SSHD 다시 설정

다음 콘텐츠를 사용하여 라는 파일을 만듭니다 settings.json .

{
    "reset_ssh":True
}

그런 다음, Azure CLI를 사용하여 확장을 호출 VMAccessForLinux 하여 json 파일을 지정하여 SSHD 연결을 다시 설정합니다. 다음 예제에서는 az vm extension set 를 사용하여 에서 명명된 myVMmyResourceGroupVM에서 SSHD를 다시 설정합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

사용자에 대한 SSH 자격 증명 다시 설정

SSHD가 올바르게 작동하는 것처럼 보이면 제공자 사용자의 자격 증명을 다시 설정할 수 있습니다. 사용자의 암호를 다시 설정하려면 라는 settings.json파일을 만듭니다. 다음 예제에서는 에 지정된 값으로 에 대한 myUsername 자격 증명을 다시 설정합니다 myPassword. 사용자 고유의 값을 사용하여 파일에 다음 줄을 settings.json 입력합니다.

{
    "username":"myUsername", "password":"myPassword"
}

또는 사용자의 SSH 키를 다시 설정하려면 먼저 라는 settings.json파일을 만듭니다. 다음 예제에서는 의 myUsername 자격 증명을 의 VM myVMmyResourceGroupmyPassword지정된 값으로 다시 설정합니다. 사용자 고유의 값을 사용하여 파일에 다음 줄을 settings.json 입력합니다.

{
    "username":"myUsername", "ssh_key":"mySSHKey"
}

json 파일을 만든 후 Azure CLI를 사용하여 확장을 호출 VMAccessForLinux 하여 json 파일을 지정하여 SSH 사용자 자격 증명을 다시 설정합니다. 다음 예제에서는 에서 명명 myVM 된 VM에서 자격 증명을 myResourceGroup다시 설정합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm extension set --resource-group philmea --vm-name Ubuntu \
    --name VMAccessForLinux --publisher Microsoft.OSTCExtensions --version 1.2 --settings settings.json

Azure 클래식 CLI 사용

아직 설치하지 않은 경우 Azure 클래식 CLI를 설치하고 Azure 구독에 연결합니다. 다음과 같이 Resource Manager 모드를 사용하고 있는지 확인합니다.

azure config mode arm

사용자 지정 Linux 디스크 이미지를 만들고 업로드한 경우 Microsoft Azure Linux 에이전트 버전 2.0.5 이상이 설치되어 있는지 확인합니다. 갤러리 이미지를 사용하여 만든 VM의 경우 이 액세스 확장이 이미 설치되고 구성되어 있습니다.

SSH 구성 다시 설정

SSHD 구성 자체가 잘못 구성되었거나 서비스에 오류가 발생할 수 있습니다. SSHD를 다시 설정하여 SSH 구성 자체가 유효한지 확인할 수 있습니다. SSHD 재설정은 수행하는 첫 번째 문제 해결 단계여야 합니다.

다음 예제에서는 라는 myResourceGroup리소스 그룹에서 라는 myVM VM에서 SSHD를 다시 설정합니다. 다음과 같이 사용자 고유의 VM 및 리소스 그룹 이름을 사용합니다.

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --reset-ssh

사용자에 대한 SSH 자격 증명 다시 설정

SSHD가 올바르게 작동하는 것처럼 보이면 제공자 사용자의 암호를 다시 설정할 수 있습니다. 다음 예제에서는 의 myUsername 자격 증명을 의 VM myVMmyResourceGroupmyPassword지정된 값으로 다시 설정합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

azure vm reset-access --resource-group myResourceGroup --name myVM \
     --user-name myUsername --password myPassword

SSH 키 인증을 사용하는 경우 지정된 사용자에 대한 SSH 키를 다시 설정할 수 있습니다. 다음 예제에서는 의 VM myVMmyResourceGroup에서 ~/.ssh/id_rsa.pub 라는 myUsername사용자에 대해 저장된 SSH 키를 업데이트합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

azure vm reset-access --resource-group myResourceGroup --name myVM \
    --user-name myUsername --ssh-key-file ~/.ssh/id_rsa.pub

VM 다시 시작

SSH 구성 및 사용자 자격 증명을 다시 설정했거나 오류가 발생한 경우 VM을 다시 시작하여 기본 컴퓨팅 문제를 해결할 수 있습니다.

Azure Portal

Azure Portal 사용하여 VM을 다시 시작하려면 다음 예제와 같이 VM을 선택한 다음 다시 시작을 선택합니다.

Azure Portal 가상 머신을 다시 시작하는 스크린샷

Azure CLI

다음 예제에서는 az vm restart를 사용하여 이라는 myResourceGroup리소스 그룹에서 라는 myVM VM을 다시 시작합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm restart --resource-group myResourceGroup --name myVM

Azure 클래식 CLI

중요

클래식 VM은 2023년 9월 1일에 사용 중지됩니다.

ASM에서 IaaS 리소스를 사용하는 경우 2023년 9월 1일까지 마이그레이션을 완료하세요. Azure Resource Manager 다양한 기능 향상 기능을 활용하기 위해 더 빨리 전환하는 것이 좋습니다.

자세한 내용은 2023년 9월 1일까지 IaaS 리소스를 Azure Resource Manager 마이그레이션을 참조하세요.

다음 예제에서는 라는 리소스 그룹에서 라는 myVM VM을 다시 시작 myResourceGroup합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

azure vm restart --resource-group myResourceGroup --name myVM

VM 다시 배포

기본 네트워킹 문제를 해결할 수 있는 Azure 내의 다른 노드에 VM을 다시 배포할 수 있습니다. VM을 다시 배포하는 방법에 대한 자세한 내용은 새 Azure 노드에 가상 머신 다시 배포를 참조하세요.

참고

이 작업이 완료되면 임시 디스크 데이터가 손실되고 가상 머신과 연결된 동적 IP 주소가 업데이트됩니다.

Azure Portal

Azure Portal 사용하여 VM을 다시 배포하려면 VM을 선택하고 도움말 섹션까지 아래로 스크롤합니다. 다음 예제와 같이 재배포 를 선택합니다.

Azure Portal 가상 머신을 다시 배포하는 스크린샷

Azure CLI

다음 예제에서는 az vm redeploy를 사용하여 라는 myResourceGroup리소스 그룹에 라는 myVM VM을 다시 배포합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

az vm redeploy --resource-group myResourceGroup --name myVM

Azure 클래식 CLI

다음 예제에서는 라는 myResourceGroup리소스 그룹에 라는 myVM VM을 다시 배포합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

azure vm redeploy --resource-group myResourceGroup --name myVM

클래식 배포 모델을 사용하여 만든 VM

중요

클래식 VM은 2023년 9월 1일에 사용 중지됩니다.

ASM에서 IaaS 리소스를 사용하는 경우 2023년 9월 1일까지 마이그레이션을 완료하세요. Azure Resource Manager 다양한 기능 향상 기능을 활용하기 위해 더 빨리 전환하는 것이 좋습니다.

자세한 내용은 2023년 9월 1일까지 IaaS 리소스를 Azure Resource Manager 마이그레이션을 참조하세요.

클래식 배포 모델을 사용하여 만든 VM에 대한 가장 일반적인 SSH 연결 실패를 resolve 다음 단계를 수행합니다. 각 단계 후에 VM에 다시 연결해 보세요.

  • Azure Portal 원격 액세스를 다시 설정합니다. Azure Portal VM을 선택한 다음 원격 다시 설정을 선택합니다.

  • VM을 다시 시작합니다. Azure Portal VM을 선택하고 다시 시작을 선택합니다.

  • VM을 새 Azure 노드에 다시 배포합니다. VM을 다시 배포하는 방법에 대한 자세한 내용은 새 Azure 노드에 가상 머신 다시 배포를 참조하세요.

    이 작업이 완료되면 임시 디스크 데이터가 손실되고 가상 머신과 연결된 동적 IP 주소가 업데이트됩니다.

  • Linux 기반 가상 머신에 대한 암호 또는 SSH를 다시 설정하는 방법의 지침을 따라 다음을 수행합니다.

    • 암호 또는 SSH 키를 다시 설정합니다.
    • sudo 사용자 계정을 만듭니다.
    • SSH 구성을 다시 설정합니다.
  • 플랫폼 문제에 대한 VM의 리소스 상태를 확인합니다.
    VM을 선택하고 설정>상태 확인을 아래로 스크롤합니다.

추가 리소스

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.