Etapas rápidas: Criar e usar um par de chaves SSH pública e privada para VMs Linux no Azure
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
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 chaves SSH pública e privada para VMs Linux. Você pode concluir essas etapas com o Azure Cloud Shell, um host macOS ou Linux.
Para obter ajuda com a solução de problemas do SSH, confira Solucionar problemas de conexões SSH para uma VM Linux do Azure com falha, apresentando erros ou recusada.
Observação
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 e exemplos, confira Etapas detalhadas para criar pares de chaves SSH.
Para ver outras maneiras de gerar e usar chaves SSH em um computador Windows, consulte Como usar chaves SSH com o Windows no Azure.
Formatos de chave SSH compatíveis
Atualmente, o Azure oferece suporte aos seguintes tipos de chaves:
- Protocolo SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) com comprimento mínimo de 2048 bits
- ED25519 Chaves com 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 comando ssh-keygen
para gerar arquivos de chave SSH pública e privada. Por padrão, esses arquivos são criados no diretório ~/.ssh. Você pode especificar um local diferente e uma senha opcional (frase secreta) para acessar o arquivo de chave privada. Se um par de chaves SSH com o mesmo nome existir no local especificado, esses arquivos serão substituídos.
O seguinte comando cria um par de chaves SSH usando a criptografia RSA e o tamanho de bit 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 a criptografia ED25519 com um comprimento fixo de 256 bits:
ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem
Observação
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.
Ao usar a CLI do Azure para criar a VM com o comando az vm create, opcionalmente, você pode gerar arquivos de chave SSH pública e privada executando a opção --generate-ssh-keys
. Os arquivos de chave são armazenados no diretório ~/.ssh, a menos que você especifique outro local com a opção --ssh-dest-key-path
. Se um par de chaves SSH já existir e a opção --generate-ssh-keys
for usada, um novo par de chaves não será gerado, em vez disso, o par de chaves existente será usado. No comando a seguir, substitua VMname, RGname e UbuntuLTS pelos seus próprios valores:
az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys
Observação
O comando az sshkey create tem como padrão a criptografia RSA e não pode ser usado para gerar pares de chaves ED25519. No entanto, você pode criar um par de chaves ED25519 usando ssh-keygen conforme descrito acima e, em seguida, usar uma chave pública para criar uma VM.
Fornecer uma chave pública SSH ao implantar uma VM
Para criar uma VM do Linux que use 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:
- Criar uma máquina virtual Linux com o Portal do Azure
- Criar uma máquina virtual Linux com a CLI do Azure
- Criar uma VM Linux usando um modelo do Azure
Se você não estiver familiarizado com o formato de uma chave SSH pública, exiba sua chave pública com o seguinte comando cat
, substituindo ~/.ssh/id_rsa.pub
pelo caminho e o nome de 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
Par de chaves ED25519
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 a ser usado no portal do Azure ou em um modelo do Resource Manager, não copie nenhum espaço em branco à direita. Para copiar uma chave pública no macOS, redirecione o arquivo de chave pública para pbcopy
. Como no Linux, é possível redirecionar o arquivo de chave pública para programas como o xclip
.
A chave pública colocada em sua VM Linux no Azure é armazenada, por padrão, no diretório ~/.ssh/
, a menos que você tenha especificado um local diferente ao criar o par de chaves. Para usar a CLI do Azure 2.0 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 a opção --ssh-key-values
. No seguinte comando, substitua myVM, myResourceGroup, UbuntuLTS, azureuser e mysshkey.pub por valores próprios:
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írgulas, como esta --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub
.
SSH em sua VM
Com a chave pública implantada em sua VM do Azure e a chave privada em seu sistema local, entre com SSH na VM usando o endereço IP ou o nome DNS da VM. No comando a seguir, substitua azureuser e myvm.westus.cloudapp.azure.com pelo nome de usuário administrador e o nome de domínio totalmente qualificado (ou o endereço IP):
ssh azureuser@myvm.westus.cloudapp.azure.com
Se você estiver se conectando a essa VM pela primeira vez, será solicitado que você verifique a impressão digital do host. É tentador aceitar a impressão digital que é apresentada, mas essa abordagem o expõe a um possível ataque man-in-the-middle. Você sempre deve validar a impressão digital do host. Você precisará fazer isso apenas na primeira vez que se conectar a um cliente. Para obter a impressão digital do host por meio do portal, use o recurso Executar Comando para executar ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
.
Para executar o comando usando a CLI, use az vm run-command invoke
.
Se você tiver especificado uma frase secreta quando criou o par de chaves, insira-a quando solicitado durante o processo de logon. A VM é adicionada ao arquivo ~/.ssh/known_hosts e você não precisará se conectar novamente até que a chave pública na 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 que possa se conectar à VM. Para obter mais informações sobre a política Just-In-Time, confira Gerenciar o acesso à máquina virtual usando a política Just-In-Time.
Próximas etapas
Para obter mais informações de como trabalhar com pares de chaves SSH, confira Etapas detalhadas para criar e gerenciar pares de chaves SSH.
Se você tiver dificuldades com conexões SSH às VM no Azure, confira Solucionar problemas de conexão SSH a uma VM do Linux no Azure.