Etapas rápidas: Criar e usar um par de chaves público-privado SSH para VMs Linux no Azure

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Com um par de chaves de shell seguro (SSH), você pode criar máquinas virtuais (VMs) no Azure que usam chaves SSH para autenticação. Este artigo mostra como gerar e usar rapidamente um par de arquivos de chave pública-privada SSH para VMs Linux. Você pode concluir essas etapas com o Azure Cloud Shell, um macOS ou um host Linux.

Para obter ajuda com a solução de problemas com SSH, consulte Solucionar problemas de conexões SSH com uma VM Linux do Azure que falha, comete erros ou é recusada.

Nota

As VMs criadas usando chaves SSH são, por padrão, configuradas com senhas desabilitadas, o que aumenta muito a dificuldade de ataques de adivinhação de força bruta.

Para obter mais informações básicas e exemplos, consulte Etapas detalhadas para criar pares de chaves SSH.

Para obter maneiras adicionais de gerar e usar chaves SSH em um computador Windows, consulte Como usar chaves SSH com o Windows no Azure.

Formatos de chave SSH suportados

Atualmente, o Azure suporta os seguintes tipos de chave:

  • Protocolo SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) com um comprimento mínimo de 2048 bits
  • ED25519 Teclas com um comprimento fixo de 256 bits

Outros formatos importantes, como Elliptic-curve Diffie-Hellman (ECDH) e Elliptic Curve Digital Signature Algorithm (ECDSA) não são suportados atualmente.

Criar um par de chaves SSH

Use o ssh-keygen comando para gerar arquivos de chave pública e privada SSH. Por padrão, esses arquivos são criados no diretório ~/.ssh. Você pode especificar um local diferente e uma senha opcional (senha) para acessar o arquivo de chave privada. Se existir um par de chaves SSH com o mesmo nome no local determinado, esses arquivos serão substituídos.

O comando a seguir cria um par de chaves SSH usando criptografia RSA e um comprimento de bit de 4096:

ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsa.pem

O comando a seguir cria um par de chaves SSH usando criptografia ED25519 com um comprimento fixo de 256 bits:

ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem

Nota

Você também pode criar pares de chaves com a CLI do Azure com o comando az sshkey create, conforme descrito em Gerar e armazenar chaves SSH.

Se você usar a CLI do Azure para criar sua VM com o comando az vm create, poderá opcionalmente gerar arquivos de chave pública e privada SSH usando a --generate-ssh-keys opção. Os arquivos de chave são armazenados no diretório ~/.ssh, a menos que especificado de outra forma com a --ssh-dest-key-path opção. Se já existir um par de chaves ssh e a --generate-ssh-keys opção for usada, um novo par de chaves não será gerado, mas o par de chaves existente será usado. No comando a seguir, substitua VMname, RGname e UbuntuLTS por seus próprios valores:

az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys

Nota

az sshkey create command deafults to RSA encryption e não pode ser usado para gerar ED25519 pares de chaves, no entanto, você pode criar um par de chaves ED25519 usando ssh-keygen como descrito acima e, em seguida, usar essa chave pública para criar uma VM.

Fornecer uma chave pública SSH ao implantar uma VM

Para criar uma VM Linux que usa chaves SSH para autenticação, especifique sua chave pública SSH ao criar a VM usando o portal do Azure, a CLI do Azure, os modelos do Azure Resource Manager ou outros métodos:

Se você não estiver familiarizado com o formato de uma chave pública SSH, poderá exibir sua chave pública com o seguinte cat comando, substituindo ~/.ssh/id_rsa.pub pelo caminho e nome do arquivo do seu próprio arquivo de chave pública, se necessário:

Par de chaves RSA

cat ~/.ssh/id_rsa.pub

Um valor de chave pública RSA típico se parece com este exemplo:

ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname

ED25519 par de chaves

cat ~/.ssh/id_ed25519.pub

Um valor de chave pública ED25519 típico se parece com este exemplo:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname

Se você copiar e colar o conteúdo do arquivo de chave pública para usar no portal do Azure ou em um modelo do Gerenciador de Recursos, certifique-se de não copiar nenhum espaço em branco à direita. Para copiar uma chave pública no macOS, você pode canalizar o arquivo de chave pública para pbcopy. Da mesma forma, no Linux, você pode canalizar o arquivo de chave pública para programas como xclip.

A chave pública que você coloca em sua VM Linux no Azure é, por padrão, armazenada no ~/.ssh/ diretório, a menos que você tenha especificado um local diferente quando criou o par de chaves. Para usar a CLI 2.0 do Azure para criar sua VM com uma chave pública existente, especifique o valor e, opcionalmente, o local dessa chave pública usando o comando az vm create com a --ssh-key-values opção. No comando a seguir, substitua myVM, myResourceGroup, UbuntuLTS, azureuser e mysshkey.pub por seus próprios valores:

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --ssh-key-values mysshkey.pub

Se você quiser usar várias chaves SSH com sua VM, poderá inseri-las em uma lista separada por vírgula, como esta --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub.

Aceder através de SSH à VM

Com a chave pública implantada em sua VM do Azure e a chave privada em seu sistema local, SSH em sua VM usando o endereço IP ou nome DNS de sua VM. No comando a seguir, substitua azureuser e myvm.westus.cloudapp.azure.com pelo nome de usuário administrador e pelo nome de domínio totalmente qualificado (ou endereço IP):

ssh azureuser@myvm.westus.cloudapp.azure.com

Se estiver a ligar a esta VM pela primeira vez, ser-lhe-á pedido que verifique a impressão digital do anfitrião. É tentador aceitar a impressão digital apresentada, mas essa abordagem expõe você a um possível ataque de pessoa no meio. Deve sempre validar a impressão digital do anfitrião. Você precisa fazer isso apenas na primeira vez que se conectar a partir de um cliente. Para obter a impressão digital do host através do portal, use o recurso Executar comando para executar o comando ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Captura de tela mostrando o uso do comando Executar para validar a impressão digital do host.

Para executar o comando usando a CLI, use az vm run-command invoke.

Se você especificou uma senha quando criou seu par de chaves, insira essa senha quando solicitado durante o processo de entrada. A VM é adicionada ao seu arquivo ~/.ssh/known_hosts e você não será solicitado a se conectar novamente até que a chave pública em sua VM do Azure seja alterada ou o nome do servidor seja removido de ~/.ssh/known_hosts.

Se a VM estiver usando a política de acesso just-in-time, você precisará solicitar acesso antes de se conectar à VM. Para obter mais informações sobre a política just-in-time, consulte Gerenciar o acesso à máquina virtual usando a política just in time.

Próximos passos