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:
- 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 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}'
.
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
Para obter mais informações sobre como trabalhar com pares de chaves SSH, consulte Etapas detalhadas para criar e gerenciar pares de chaves SSH.
Se você tiver dificuldades com conexões SSH para VMs do Azure, consulte Solucionar problemas de conexões SSH com uma VM Linux do Azure.