Connect to HDInsight (Apache Hadoop) using SSH (Ligar ao HDInsight (Apache Hadoop) através de SSH)

Saiba como usar o Secure Shell (SSH) para se conectar com segurança ao Apache Hadoop no Azure HDInsight. Para obter informações sobre como se conectar por meio de uma rede virtual, consulte Arquitetura de rede virtual do Azure HDInsight. Consulte também, Planejar uma implantação de rede virtual para clusters do Azure HDInsight.

A tabela a seguir contém as informações de endereço e porta necessárias ao se conectar ao HDInsight usando um cliente SSH:

Endereço Porta Liga-se a...
<clustername>-ssh.azurehdinsight.net 22 Nó principal primário
<clustername>-ssh.azurehdinsight.net 23 Nó principal secundário
<edgenodename>.<clustername>-ssh.azurehdinsight.net 22 nó de borda (qualquer outro tipo de cluster, se existir um nó de borda)

Substitua <clustername> pelo nome do cluster. Substitua <edgenodename> pelo nome do nó de extremidade.

Se o cluster contém um nó de extremidade, recomendamos ligar sempre ao nó de extremidade através de SSH. Os nós principais alojam serviços que são fundamentais para o estado de funcionamento do Hadoop. O nó de extremidade executa apenas o que colocar no mesmo. Para obter mais informações sobre a utilização de nós de extremidade, veja Use edge nodes in HDInsight (Utilizar nós de extremidade no HDInsight).

Gorjeta

Quando liga pela primeira vez ao HDInsight, o cliente SSH pode apresentar um aviso a indicar que não é possível estabelecer a autenticidade do anfitrião. Quando lhe for pedido selecione "sim" para adicionar o anfitrião à lista de servidores fidedignos do seu cliente SSH.

Se anteriormente tiver ligado a um servidor com o mesmo nome, poderá receber um aviso a indicar que a chave de anfitrião armazenado não corresponde à chave de anfitrião do servidor. Veja a documentação para o cliente SSH sobre como remover a entrada existente para o nome do servidor.

Clientes SSH

Os sistemas Linux, Unix e macOS fornecem os comandos ssh e scp. O cliente ssh é usado normalmente para criar uma sessão de linha de comandos remota com um sistema baseado em Unix ou Linux. O cliente scp é usado para copiar com segurança ficheiros entre o cliente e o sistema remoto.

O Microsoft Windows não instala nenhum cliente SSH por padrão. Os clientes ssh e scp estão disponíveis para o Windows através dos seguintes pacotes:

Existem também vários clientes gráficos SSH, como PuTTY e MobaXterm. Embora estes clientes possam ser utilizados para ligar ao HDInsight, o processo de ligação é diferente relativamente à utilização do utilitário ssh. Para obter mais informações, consulte a documentação do cliente gráfico que você está usando.

Autenticação: chaves SSH

As chaves SSH usam criptografia de chave pública para autenticar sessões SSH. As chaves SSH são mais seguras do que as palavras-passe e proporcionam uma forma fácil de proteger o acesso ao seu cluster do Hadoop.

Se a sua conta SSH for protegida com uma chave, o cliente tem de fornecer a chave privada correspondente quando se ligar:

  • A maioria dos clientes podem ser configurados para utilizar uma chave predefinida. Por exemplo, o cliente ssh procura uma chave privada em ~/.ssh/id_rsa nos ambientes Linux e Unix.

  • Pode especificar o caminho para uma chave privada. Com o cliente ssh, o parâmetro -i é utilizado para especificar o caminho para a chave privada. Por exemplo, ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net.

  • Se tiver múltiplas chaves privadas para utilização com diferentes servidores, considere utilizar um utilitário, como o ssh-agent (https://en.wikipedia.org/wiki/Ssh-agent). O utilitário ssh-agent pode ser usado para selecionar automaticamente a chave a utilizar ao estabelecer uma sessão SSH.

Importante

Se proteger a chave privada com uma frase de acesso, tem de introduzi-la quando utilizar a chave. Utilitários como ssh-agent podem colocar em cache a palavra-passe, para sua comodidade.

Criar um par de chaves SSH

Utilize o comando ssh-keygen para criar ficheiros de chaves públicas e privadas. O comando seguinte gera um par de chaves RSA de 2048 bits que pode ser utilizado com o HDInsight:

ssh-keygen -t rsa -b 2048

Você será solicitado a fornecer informações durante o processo de criação da chave. Por exemplo, onde estão armazenadas as chaves ou se pretende utilizar uma frase de acesso. Após a conclusão do processo, são criados dois ficheiros: uma chave pública e uma chave privada.

  • A chave pública é utilizada para criar um cluster do HDInsight. A chave pública tem a extensão .pub.

  • A chave privada é utilizada para autenticar o cliente no cluster do HDInsight.

Importante

Pode utilizar uma frase de acesso para proteger as chaves. Uma frase de acesso é efetivamente uma palavra-passe na sua chave privada. Mesmo se alguém obtiver a sua chave privada, essa pessoa tem de ter a frase de acesso para poder utilizá-la.

Utilizar a chave pública para criar o HDInsight

Método de criação Como utilizar a chave pública
Portal do Azure Desmarque Usar senha de login do cluster para SSH e selecione Chave Pública como o tipo de autenticação SSH. Finalmente, selecione o arquivo de chave pública ou cole o conteúdo do texto do arquivo no campo de chave pública SSH.
SSH public key dialog in HDInsight cluster creation
Azure PowerShell Use o parâmetro do cmdlet New-AzHdinsightCluster e passe o -SshPublicKey conteúdo da chave pública como uma cadeia de caracteres.
CLI do Azure Utilize o parâmetro --sshPublicKey do comando az hdinsight create e transmita os conteúdos da chave pública como uma cadeia.
Modelo do Resource Manager Para obter um exemplo de como utilizar chaves SSH com um modelo, veja Deploy HDInsight on Linux with SSH key (Implementar o HDInsight no Linux com uma chave SSH). O elemento publicKeys no ficheiro azuredeploy.json é utilizado para transmitir as chaves ao Azure ao criar o cluster.

Autenticação: palavra-passe

As contas SSH podem ser protegidas através de palavra-passe. Quando você se conecta ao HDInsight usando SSH, você é solicitado a inserir a senha.

Aviso

A Microsoft não recomenda utilizar a autenticação por palavra-passe para SSH. As palavras-passe podem ser descobertas e são vulneráveis a ataques de força bruta. Em vez disso, recomendamos que utilize chaves SSH para a autenticação.

Importante

A palavra-passe da conta SSH expira 70 dias após a criação do cluster do HDInsight. Se a palavra-passe expirar, poderá alterá-la ao utilizar as informações no documento Gerir o HDInsight.

Utilizar uma palavra-passe para criar o HDInsight

Método de criação Como especificar a palavra-passe
Portal do Azure Por predefinição, a conta de utilizador SSH tem a mesma palavra-passe da conta de início de sessão do cluster. Para usar uma senha diferente, desmarque Usar senha de login do cluster para SSH e digite a senha no campo Senha SSH.
SSH password dialog in HDInsight cluster creation
Azure PowerShell Use o parâmetro do cmdlet New-AzHdinsightCluster e passe um PSCredential objeto que contenha o --SshCredential nome da conta de usuário e a senha do SSH.
CLI do Azure Utilize o parâmetro --ssh-password do comando az hdinsight create e indique o valor da palavra-passe.
Modelo do Resource Manager Para obter um exemplo de como utilizar a palavra-passe com um modelo, veja Deploy HDInsight on Linux with SSH password (Implementar o HDInsight no Linux com uma palavra-passe SSH). O elemento linuxOperatingSystemProfile no ficheiro azuredeploy.json é utilizado para transmitir o nome e a palavra-passe da conta SSH ao Azure ao criar o cluster.

Alterar a palavra-passe SSH

Para obter informações sobre como alterar a palavra-passe da conta do utilizador SSH, veja a secção Change passwords (Alterar palavras-passe) do documento Manage HDInsight (Gerir o HDInsight).

Domínio de autenticação ingressado no HDInsight

Se você estiver usando um cluster HDInsight associado a um domínio, deverá usar o comando depois de se conectar com o kinit usuário local SSH. Este comando solicita um usuário e uma senha de domínio e autentica sua sessão com o domínio Microsoft Entra associado ao cluster.

Você também pode habilitar a Autenticação Kerberos em cada nó ingressado no domínio (por exemplo, nó principal, nó de borda) para ssh usando a conta de domínio. Para editar este ficheiro de configuração de sshd:

sudo vi /etc/ssh/sshd_config

anule os comentários e altere KerberosAuthentication para yes

sudo service sshd restart

Use klist o comando para verificar se a autenticação Kerberos foi bem-sucedida.

Para obter mais informações, veja Configure domain-joined HDInsight (Configurar o HDInsight associado a um domínio).

Ligar a nós

Os nós principais e o nó de borda (se houver) podem ser acessados pela internet nas portas 22 e 23.

  • Ao estabelecer ligação com os nós principais, utilize a porta 22 ligar ao nó principal primário e a porta 23 para ligar ao nó principal secundário. O nome de domínio completamente qualificado a utilizar é clustername-ssh.azurehdinsight.net, em que clustername é o nome do cluster.

    # Connect to primary head node
    # port not specified since 22 is the default
    ssh sshuser@clustername-ssh.azurehdinsight.net
    
    # Connect to secondary head node
    ssh -p 23 sshuser@clustername-ssh.azurehdinsight.net
    
  • Quando ligar ao nó de extremidade, utilize a porta 22. O nome de domínio completamente qualificado é edgenodename.clustername-ssh.azurehdinsight.net, em que edgenodename é um nome que forneceu quando criou o nó de extremidade. clustername é o nome do cluster.

    # Connect to edge node
    ssh sshuser@edgnodename.clustername-ssh.azurehdinsight.net
    

Importante

Os exemplos anteriores pressupõem que está a utilizar a autenticação por palavra-passe ou a autenticação de certificados está a ocorrer automaticamente. Se utilizar um par de chaves SSH para a autenticação e o certificado não for utilizado automaticamente, utilize o parâmetro -i para especificar a chave privada. Por exemplo, ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.

Uma vez conectado, o prompt muda para indicar o nome de usuário SSH e o nó ao qual você está conectado. Por exemplo, quando estiver ligado ao nó principal primário como sshuser, a linha de comandos é sshuser@<active-headnode-name>:~$.

Conectar-se aos nós do trabalhador e do Apache Zookeeper

Os nós de trabalho e os nós do Zookeeper não são diretamente acessíveis pela Internet. Podem ser acedidos a partir dos nós principais ou nós de extremidade do cluster. Seguem-se os passos gerais necessários para ligar a outros nós:

  1. Utilizar o SSH para ligar a um nó principal ou de extremidade:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. A partir da ligação SSH ao nó principal ou de extremidade, utilize o comando ssh para ligar a um nó de trabalho no cluster:

    ssh sshuser@wn0-myhdi
    

    Para recuperar uma lista dos nomes dos nós, consulte Gerenciar o HDInsight usando o documento da API REST do Apache Ambari.

Se a conta SSH for protegida por palavra-passe, introduza-a ao ligar.

Se a conta SSH for protegida por chaves SSH, certifique-se de que o encaminhamento SSH está ativado no cliente.

Nota

Outra forma de aceder diretamente a todos os nós do cluster é instalar HDInsight numa Rede Virtual do Azure. Depois, pode associar o computador remoto à mesma rede virtual e aceder diretamente a todos os nós no cluster.

Para obter mais informações, consulte Planejar uma rede virtual para o HDInsight.

Configurar o reencaminhamento de agentes SSH

Importante

Os passos seguintes pressupõem um sistema baseado em Linux ou UNIX e funcionam com o Bash no Windows 10. Se não funcionarem no seu sistema, poderá ter de ver a documentação do seu cliente SSH.

  1. Utilizando um editor de texto, abra ~/.ssh/config. Se este ficheiro não existir, pode criá-lo ao introduzir touch ~/.ssh/config na linha de comandos.

  2. Adicione o texto seguinte ao ficheiro config.

    Host <edgenodename>.<clustername>-ssh.azurehdinsight.net
        ForwardAgent yes
    

    Substitua as informações do Anfitrião pelo endereço do nó ao qual se liga com SSH. O exemplo anterior utiliza o nó de extremidade. Esta entrada configura o reencaminhamento de agentes SSH para o nó especificado.

  3. Teste o reencaminhamento de agente SSH ao utilizar o comando seguinte no terminal:

    echo "$SSH_AUTH_SOCK"
    

    Este comando devolve informações semelhantes ao texto seguinte:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Se nada for retornado, então ssh-agent não está em execução.

  4. Depois de verificar se o ssh-agent está em execução, use o seguinte para adicionar sua chave privada SSH ao agente:

    ssh-add ~/.ssh/id_rsa
    

    Se a chave privada estiver armazenada num ficheiro diferente, substitua ~/.ssh/id_rsa pelo caminho para o ficheiro.

  5. Utilize SSH para ligar aos nós de extremidade ou principais do cluster. Em seguida, utilize o comando SSH para ligar a um nó de trabalho ou zookeeper. A ligação é estabelecida com a chave reencaminhada.

Próximos passos