Conectar o HDInsight (Apache Hadoop) usando SSH

Saiba como usar SSH (Secure Shell) para conectar com segurança o 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 para se conectar ao HDInsight usando SSH:

Endereço Porta Conecta-se a...
<clustername>-ssh.azurehdinsight.net 22 Nó de cabeçalho primário
<clustername>-ssh.azurehdinsight.net 23 Nó de cabeçalho 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 borda.

Se o cluster contém um nó de borda, recomendamos que você sempre se conecte ao nó de borda usando SSH. Os nós de cabeçalho hospedam serviços que são essenciais para a integridade do Hadoop. O nó de borda executa apenas o que você coloca nele. Para obter mais informações sobre o uso de nós de borda, confira Usar nós de borda no HDInsight.

Dica

Quando você se conectar pela primeira vez ao HDInsight, seu cliente SSH poderá exibir um aviso de que a autenticidade do host não pode ser estabelecida. Quando for solicitado, selecione 'sim', para adicionar o host à lista de servidores confiáveis do cliente SSH.

Se você tiver se conectado anteriormente a um servidor com o mesmo nome, receberá um aviso de que a chave do host armazenado não corresponde à chave do host do servidor. Veja a documentação do seu 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 normalmente é usado para criar uma sessão de linha de comando remota com um sistema baseado em Unix ou Linux. O cliente scp é usado para copiar os arquivos entre o cliente e o sistema remoto com segurança.

Por padrão, o Microsoft Windows não instala clientes SSH. Os clientes ssh e scp estão disponíveis para Windows nos seguintes pacotes:

Também há vários clientes SSH gráficos, como PuTTY e MobaXterm. Embora esses clientes possam ser usados para se conectar ao HDInsight, o processo de conexão é diferente do que usa o utilitário ssh. Para obter mais informações, consulte a documentação do cliente gráfico que está usando.

Autenticação: chaves SSH

As chaves SSH usam criptografia de chave pública para autenticar as sessões SSH. Chaves SSH são mais seguras do que senhas e fornecem uma maneira fácil de proteger o acesso ao seu cluster Hadoop.

Se a conta SSH for protegida usando uma chave, o cliente deverá fornecer a chave privada correspondente ao se conectar:

  • A maioria dos clientes pode ser configurada para usar uma chave padrão. Por exemplo, o cliente ssh procura uma chave privada em ~/.ssh/id_rsa em ambientes Unix e Linux.

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

  • Se você tiver várias chaves privadas para uso com servidores diferentes, considere usar um utilitário como ssh-agent (https://en.wikipedia.org/wiki/Ssh-agent). O utilitário ssh-agent pode ser usado para selecionar a chave a ser usada ao estabelecer uma sessão SSH automaticamente.

Importante

Se proteger a chave privada com uma senha, você deverá inserir a senha ao usar a chave. Utilitários como o ssh-agent podem armazenar a senha em cache para conveniência.

Criar um par de chaves SSH

Use o comando ssh-keygen para criar arquivos de chaves públicas e privadas. O comando a seguir gera um par de chaves RSA de 2048 bits que podem ser usadas com o HDInsight:

ssh-keygen -t rsa -b 2048

Serão solicitadas informações durante o processo de criação de chave. Por exemplo, onde as chaves são armazenadas ou se deseja usar uma frase secreta. Após a conclusão do processo, dois arquivos são criados: uma chave pública e uma chave privada.

  • A chave pública é usada para criar um cluster HDInsight. A chave pública tem uma extensão de .pub.

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

Importante

Você pode proteger as chaves usando uma frase secreta. Uma frase secreta é efetivamente uma senha na chave privada. Mesmo se alguém obtiver a chave privada, deverá ter a senha para usar a chave.

Criar o HDInsight usando a chave pública

Método de criação Como usar a chave pública
Portal do Azure Desmarque Usar a senha de logon do cluster para SSH e selecione Chave Pública como o tipo de autenticação SSH. Por fim, selecione o arquivo de chave pública ou cole o conteúdo do arquivo de texto no campo Chave pública SSH.
SSH public key dialog in HDInsight cluster creation.
PowerShell do Azure Use o parâmetro -SshPublicKey do cmdlet New-AzHdinsightCluster e passe o conteúdo da chave pública como uma cadeia de caracteres.
CLI do Azure Use o parâmetro --sshPublicKey do az hdinsight create comando e passe o conteúdo da chave pública como uma cadeia de caracteres.
Modelo do Resource Manager Para obter um exemplo de como usar chaves SSH com um modelo, confira Implantar o HDInsight no Linux com uma chave SSH. O elemento publicKeys o arquivo azuredeploy.json são usados para passar as chaves do Azure ao criar o cluster.

Autenticação: senha

Contas SSH podem ser protegidas usando uma senha. Ao se conectar ao HDInsight usando SSH, será necessário digitar a senha.

Aviso

A Microsoft não recomenda o uso da autenticação de senha para o SSH. As senhas podem ser adivinhadas e são vulneráveis a ataques de força bruta. Em vez disso, é recomendável usar chaves SSH para autenticação.

Importante

A senha da conta SSH expira 70 dias depois da criação do cluster HDInsight. Se a senha expirar, você pode alterá-la usando as informações do documento Gerenciar HDInsight.

Criar o HDInsight usando uma senha

Método de criação Como especificar a senha
Portal do Azure Por padrão, a conta de usuário SSH tem a mesma senha que a conta de logon do cluster. Para usar uma senha diferente, desmarque Usar a senha de logon do cluster para SSH e digite a senha no campo Senha SSH.
SSH password dialog in HDInsight cluster creation.
PowerShell do Azure Use o parâmetro --SshCredential do cmdlet New-AzHdinsightCluster e passe um objeto PSCredential que contém o nome da conta de usuário SSH e a senha.
CLI do Azure Use o parâmetro --ssh-password do comando az hdinsight create e forneça o valor da senha.
Modelo do Resource Manager Para obter um exemplo de como usar uma senha com um modelo, confira Implantar o HDInsight no Linux com uma senha SSH. O elemento linuxOperatingSystemProfile no arquivo azuredeploy.json é usado para passar o nome de conta do SSH e a senha para o Azure ao criar o cluster.

Alterar a senha SSH

Para obter informações sobre como alterar a senha de conta de usuário do SSH, confira a seção Alterar senhas do documento Gerenciar o HDInsight.

HDInsight ingressado no domínio de autenticação

Se estiver usando um cluster HDInsight associado ao domínio, deverá usar o comando kinit após conectar com o usuário local SSH. Esse comando solicita um usuário de domínio e senha e autentica sua sessão com o domínio do Microsoft Entra associado ao cluster.

Também é possível habilitar a Autenticação Kerberos em cada nó ingressado no domínio (por exemplo, nó de cabeçalho, nó de borda) para ssh usando a conta de domínio. Para fazer isso, edite o arquivo de configuração do sshd:

sudo vi /etc/ssh/sshd_config

remova os comentários e altere KerberosAuthentication para yes

sudo service sshd restart

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

Para obter mais informações, confira Configurar o HDInsight associado ao domínio.

Conectar os nós

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

  • Ao conetar os nós principais, use a porta 22 para conectar o nó principal primário e a porta 23 para conectar o nó principal secundário. O nome de domínio totalmente qualificado a usar é clustername-ssh.azurehdinsight.net, no qual 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
    
  • Ao se conectar ao nó de borda, use a porta 22. O nome de domínio totalmente qualificado é edgenodename.clustername-ssh.azurehdinsight.net, no qual edgenodename é o nome fornecido ao criar o nó de borda. clustername é o nome do cluster.

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

Importante

Os exemplos anteriores supõem que você está usando a autenticação de senha ou que a autenticação do certificado está ocorrendo automaticamente. Se você usar um par de chaves SSH para a autenticação e o certificado não for usado automaticamente, use 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 conectado ao nó principal primário como sshuser, o prompt é sshuser@<active-headnode-name>:~$.

Conectar o trabalho e nós do Apache ZooKeeper

Os nós de trabalho e de Zookeeper não podem ser acessados pela Internet diretamente. Eles podem ser acessados dos nós principais do cluster ou do nós de borda. A seguir estão as etapas gerais para se conectar-se a outros nós:

  1. Use o SSH para se conectar a um nó de cabeçalho ou de borda:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. Da conexão SSH para o nó de cabeçalho ou de borda, use o comando ssh para se conectar a um nó de trabalho no cluster:

    ssh sshuser@wn0-myhdi
    

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

Se a conta SSH é protegida com senha, digite a senha ao se conectar.

Se a conta SSH é protegida usando chaves SSH, verifique se o encaminhamento de SSH está habilitado no cliente.

Observação

Outra maneira de acessar diretamente todos os nós do cluster é instalar o HDInsight em uma Rede Virtual do Azure. Em seguida, você pode associar o computador remoto à mesma rede virtual e acessar diretamente todos os nós no cluster.

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

Configurar o encaminhamento do agente SSH

Importante

As etapas a seguir pressupõem o uso de um sistema com base em Linux ou UNIX e funcionam com Bash no Windows 10. Se essas etapas não funcionarem para o seu sistema, você precisará conferir a documentação de seu cliente SSH.

  1. Usando um editor de texto, abra ~/.ssh/config. Se esse arquivo não existir, você poderá criá-lo digitando touch ~/.ssh/config na linha de comando.

  2. Adicione o texto a seguir ao arquivo config.

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

    Substitua as informações de Host pelo endereço do nó ao qual você se conecta usando o SSH. O exemplo anterior usa o nó de borda. Essa entrada configura o encaminhamento de agente SSH para o nó especificado.

  3. Teste o encaminhamento do agente SSH usando o seguinte comando no terminal:

    echo "$SSH_AUTH_SOCK"
    

    Esse comando retorna informações semelhantes ao seguinte texto:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

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

  4. Após confirmar que 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 em um arquivo diferente, substitua ~/.ssh/id_rsa pelo caminho para o arquivo.

  5. Conecte-se ao nó de borda de cluster ou aos nós de cabeçalho usando o SSH. Em seguida, use o comando SSH para se conectar a um nó de trabalho ou zookeeper. A conexão é estabelecida usando a chave encaminhada.

Próximas etapas