다음을 통해 공유


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

적용 대상: ✔️ Linux VM

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

참고 항목

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

빠른 문제 해결 단계

각 문제 해결 단계 후 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 구성 또는 자격 증명을 신속하게 다시 설정합니다.
  • Azure VMAccessForLinux 확장 - json 정의 파일을 만들고 다시 사용하여 SSH 구성 또는 사용자 자격 증명을 다시 설정합니다.

각 문제 해결 단계가 끝나면 VM에 다시 연결해 보세요. 그래도 연결할 수 없으면 다음 단계를 시도합니다.

Azure Portal 사용

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

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

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

SSH 구성 재설정

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

사용자용 SSH 자격 증명 다시 설정

기존 사용자의 자격 증명을 다시 설정하려면 이전 스크린샷과 같이 모드 섹션 중 하나를 Reset SSH public key 선택하거나 Reset password 모드 섹션에서 선택합니다. 사용자 이름 및 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를 사용하여 myResourceGroupmyVM이라는 VM에서 SSH 구성을 다시 설정합니다. 다음과 같이 사용자 고유의 값을 사용합니다.

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

사용자용 SSH 자격 증명 다시 설정

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

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

SSH 키 인증을 사용하는 경우 지정된 사용자의 SSH 키를 다시 설정할 수 있습니다. 다음 예제에서는 az vm access set-linux-user를 사용하여 명명 myResourceGroupmyVM 된 VM에서 ~/.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를 사용하여 이름이 지정된 myVM myResourceGroupVM에서 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 파일을 만듭니다. 다음 예제에서는 myResourceGroupmyVM이라는 VM에서 myUsername의 자격 증명을 myPassword에 지정된 값으로 다시 설정합니다. 사용자 고유의 값을 사용하여 파일에 다음 줄을 settings.json 입력합니다.

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

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

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

SSH 구성 다시 설정

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

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

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

사용자용 SSH 자격 증명 다시 설정

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

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

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

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

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

추가 리소스

  • 이후 단계를 수행한 후에도 VM에 SSH할 수 없는 경우 더 자세한 문제 해결 단계를 참조하여 문제를 해결하기 위한 추가 단계를 검토하세요.
  • 애플리케이션 액세스 문제 해결에 대한 자세한 내용은 Azure 가상 머신에서 실행되는 애플리케이션에 대한 액세스 문제 해결을 참조 하세요.
  • 클래식 배포 모델을 사용하여 만든 가상 머신 문제 해결에 대한 자세한 내용은 Linux 기반 가상 머신에 대한 암호 또는 SSH를 다시 설정하는 방법을 참조 하세요.

도움을 요청하십시오.

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