Solucionar problemas de conexão SSH na VM do Linux do Azure devido a problemas de permissão e propriedade
Observação
O CentOS referenciado neste artigo é uma distribuição do Linux e chegará ao EOL (End Of Life). Considere seu uso e planeje de acordo. Para obter mais informações, confira Diretrizes de Fim de Vida do CentOS.
Este artigo fornece soluções para um problema em que a conexão com uma VM (máquina virtual) do Linux por meio do Secure Shell (SSH) falha porque o diretório /var/empty/sshd no RHEL, o diretório /var/lib/empty no SUSE, ou o diretório /var/run/sshd no Ubuntu, não existe ou não é propriedade do usuário raiz, ou é gravável em grupo ou gravável pelo mundo.
Sintomas
Quando você se conecta a uma VM (máquina virtual) do Linux por meio do SSH, a conexão falha. Você pode receber a seguinte mensagem de erro sobre o diretório afetado, dependendo da distribuição do Linux.
sudo tail /var/log/messages
sshd: /var/empty/sshd must be owned by root and not group or world-writable.
Motivo
Esse problema poderá ocorrer se o diretório afetado não pertencer ao usuário raiz ou se ele for gravável em grupo ou em todo o mundo.
Para resolve esse problema, use uma das seguintes resoluções:
Resolução 1: reparar a VM online
Aqui estão dois métodos para reparar a VM offline:
Use o console serial
Conecte-se ao Console Serial da VM de portal do Azure.
Entre na VM usando uma conta administrativa local e sua credencial ou senha correspondentes.
Execute os seguintes comandos para resolve o problema de permissão e propriedade:
sudo mkdir -p /var/empty/sshd sudo chmod 755 /var/empty/sshd sudo chown root:root /var/empty/sshd
Usar a extensão "Executar Comando"
Observação
Esse método depende do Agente de VM do Linux do Azure (waagent). Portanto, verifique se o agente está instalado na VM e se seu serviço está em execução.
No portal do Azure, abra a janela Propriedades da VM para marcar o agente status. Se o agente estiver habilitado e tiver o Status Pronto, siga estas etapas para alterar a permissão:
Acesse o portal do Azure, localize as configurações da VM e selecione Executar Comando em Operações.
Execute o seguinte script de shell selecionando RunShellScript>Run:
#!/bin/bash #Script to change permissions on a file mkdir -p /var/empty/sshd;chmod 755 /var/empty/sshd;chown root:root /var/empty/sshd
- Após a conclusão da execução do script, a janela do console de saída mostrará uma mensagem "Habilitar êxito".
Se você puder se conectar à VM por meio do SSH e quiser analisar os detalhes da execução do script de comando de execução, examine o arquivo handler.log no diretório /var/log/azure/run-command .
Resolução 2: reparar a VM offline
Observação
- Use essa resolução se o acesso de console serial da VM não estiver disponível e o waagent não estiver pronto.
- No Ubuntu, o diretório /var/run/sshd é executado na memória. Reiniciar a VM também corrigirá o problema. Portanto, a solução de problemas offline nas VMs do Ubuntu não é necessária.
Aqui estão dois métodos para reparar a VM offline:
Use o Reparo Automático do Azure Linux (ALAR)
Os scripts do ALAR (Reparo Automático) do Azure Linux fazem parte da extensão de reparo da VM descrita em Reparar uma VM linux usando os comandos de reparo da Máquina Virtual do Azure.
Siga estas etapas para automatizar o processo offline manual:
Observação
Nas etapas a seguir, substitua $RGNAME
, $VMNAME
, $USERNAME
, $PASSWORD
e repairdiskcopy
valores de acordo.
Use o comando az vm repair create para criar uma VM de reparo. A VM de reparo tem uma cópia do disco do sistema operacional para a VM problemática anexada.
az vm repair create --verbose -g $RGNAME -n $VMNAME --repair-username $USERNAME --repair-password $PASSWORD --copy-disk-name repairdiskcopy
Entre na VM de reparo. Monte e chroot no sistema de arquivos da cópia anexada do disco do sistema operacional. Siga as instruções de chroot detalhadas.
Execute os seguintes comandos para resolve os problemas de permissão e propriedade:
mkdir -p /var/empty/sshd chmod 755 /var/empty/sshd chown root:root /var/empty/sshd
Depois que as alterações forem aplicadas, execute o comando a seguir
az vm repair restore
para executar uma troca automática de disco do sistema operacional com a VM original.az vm repair restore --verbose -g $RGNAME -n $VMNAME
Usar o método manual
Se o console serial e a abordagem ALAR não se aplicarem a você ou falharem, o reparo deverá ser executado manualmente. Siga as etapas abaixo para anexar manualmente o disco do sistema operacional a uma VM de recuperação e trocar o disco do sistema operacional de volta para a VM original:
- Anexe o disco do sistema operacional a uma VM de recuperação usando o portal do Azure.
- Anexar o disco do sistema operacional a uma VM de recuperação usando a CLI do Azure.
Assim que o disco do SO for anexado com sucesso à VM de recuperação, siga as instruções chroot detalhadas para montar e fazer chroot nos sistemas de arquivos do disco do SO anexado. Em seguida, siga a etapa 3 na seção Usar o ALAR (Reparo Automático) do Azure Linux para resolve os problemas de permissão e propriedade.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de