Conectar o HDInsight (Apache Hadoop) usando SSHConnect to HDInsight (Apache Hadoop) using SSH

Saiba como usar SSH (Secure Shell) para conectar com segurança o Apache Hadoop no Azure HDInsight.Learn how to use Secure Shell (SSH) to securely connect to Apache Hadoop on Azure HDInsight. Para obter informações sobre como se conectar por meio de uma rede virtual, consulte arquitetura de rede virtual do Azure HDInsight e planejar uma implantação de rede virtual para clusters do Azure hdinsight.For information on connecting through a virtual network, see Azure HDInsight virtual network architecture and Plan a virtual network deployment for Azure HDInsight clusters.

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:The following table contains the address and port information needed when connecting to HDInsight using an SSH client:

EndereçoAddress PortaPort Conecta-se a...Connects to...
<clustername>-ssh.azurehdinsight.net 2222 Nó de cabeçalho primárioPrimary headnode
<clustername>-ssh.azurehdinsight.net 2323 Nó de cabeçalho secundárioSecondary headnode
<clustername>-ed-ssh.azurehdinsight.net 2222 nó de borda (serviços de ML no HDInsight)edge node (ML Services on HDInsight)
<edgenodename>.<clustername>-ssh.azurehdinsight.net 2222 nó de borda (qualquer outro tipo de cluster, se existir um nó de borda)edge node (any other cluster type, if an edge node exists)

Substitua <clustername> pelo nome do cluster.Replace <clustername> with the name of your cluster. Substitua <edgenodename> pelo nome do nó de borda.Replace <edgenodename> with the name of the edge node.

Se o cluster contém um nó de borda, recomendamos que você sempre se conecte ao nó de borda usando SSH.If your cluster contains an edge node, we recommend that you always connect to the edge node using SSH. Os nós de cabeçalho hospedam serviços que são essenciais para a integridade do Hadoop.The head nodes host services that are critical to the health of Hadoop. O nó de borda executa apenas o que você coloca nele.The edge node runs only what you put on it. Para obter mais informações sobre o uso de nós de borda, confira Usar nós de borda no HDInsight.For more information on using edge nodes, see Use edge nodes in 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.When you first connect to HDInsight, your SSH client may display a warning that the authenticity of the host can't be established. Quando for solicitado, selecione 'sim', para adicionar o host à lista de servidores confiáveis do cliente SSH.When prompted select 'yes' to add the host to your SSH client's trusted server list.

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.If you have previously connected to a server with the same name, you may receive a warning that the stored host key does not match the host key of the server. Veja a documentação do seu cliente SSH sobre como remover a entrada existente para o nome do servidor.Consult the documentation for your SSH client on how to remove the existing entry for the server name.

Clientes SSHSSH clients

Os sistemas Linux, Unix e macOS fornecem os comandos ssh e scp.Linux, Unix, and macOS systems provide the ssh and scp commands. O cliente ssh normalmente é usado para criar uma sessão de linha de comando remota com um sistema baseado em Unix ou Linux.The ssh client is commonly used to create a remote command-line session with a Linux or Unix-based system. O cliente scp é usado para copiar os arquivos entre o cliente e o sistema remoto com segurança.The scp client is used to securely copy files between your client and the remote system.

O Microsoft Windows não instala clientes SSH por padrão.Microsoft Windows doesn't install any SSH clients by default. Os clientes ssh e scp estão disponíveis para Windows nos seguintes pacotes:The ssh and scp clients are available for Windows through the following packages:

Também há vários clientes SSH gráficos, como reproduzida e MobaXterm.There are also several graphical SSH clients, such as PuTTY and 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.While these clients can be used to connect to HDInsight, the process of connecting is different than using the ssh utility. Para obter mais informações, consulte a documentação do cliente gráfico que você está usando.For more information, see the documentation of the graphical client you're using.

Autenticação: Chaves SSHAuthentication: SSH Keys

As chaves SSH usam criptografia de chave pública para autenticar sessões ssh.SSH keys use public-key cryptography to authenticate SSH sessions. Chaves SSH são mais seguras do que senhas e fornecem uma maneira fácil de proteger o acesso ao seu cluster Hadoop.SSH keys are more secure than passwords, and provide an easy way to secure access to your Hadoop cluster.

Se a conta SSH for protegida usando uma chave, o cliente deverá fornecer a chave privada correspondente ao se conectar:If your SSH account is secured using a key, the client must provide the matching private key when you connect:

  • A maioria dos clientes pode ser configurada para usar uma chave padrão.Most clients can be configured to use a default key. Por exemplo, o cliente ssh procura uma chave privada em ~/.ssh/id_rsa em ambientes Unix e Linux.For example, the ssh client looks for a private key at ~/.ssh/id_rsa on Linux and Unix environments.

  • Você pode especificar o caminho para uma chave particular.You can specify the path to a private key. Com o cliente ssh, o parâmetro -i é usado para especificar o caminho para a chave privada.With the ssh client, the -i parameter is used to specify the path to private key. Por exemplo, ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net.For example, 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).If you have multiple private keys for use with different servers, consider using a utility such as 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.The ssh-agent utility can be used to automatically select the key to use when establishing an SSH session.

Importante

Se proteger a chave privada com uma senha, você deverá inserir a senha ao usar a chave.If you secure your private key with a passphrase, you must enter the passphrase when using the key. Utilitários como o ssh-agent podem armazenar a senha em cache para conveniência.Utilities such as ssh-agent can cache the password for your convenience.

Criar um par de chaves SSHCreate an SSH key pair

Use o comando ssh-keygen para criar arquivos de chaves públicas e privadas.Use the ssh-keygen command to create public and private key files. O comando a seguir gera um par de chaves RSA de 2048 bits que podem ser usadas com o HDInsight:The following command generates a 2048-bit RSA key pair that can be used with HDInsight:

ssh-keygen -t rsa -b 2048

Você será solicitado a fornecer informações durante o processo de criação de chave.You're prompted for information during the key creation process. Por exemplo, onde as chaves são armazenadas ou se deseja usar uma frase secreta.For example, where the keys are stored or whether to use a passphrase. Após a conclusão do processo, dois arquivos são criados: uma chave pública e uma chave privada.After the process completes, two files are created; a public key and a private key.

  • A chave pública é usada para criar um cluster HDInsight.The public key is used to create an HDInsight cluster. A chave pública tem uma extensão de .pub.The public key has an extension of .pub.

  • A chave privada é usado para autenticar o cliente no cluster HDInsight.The private key is used to authenticate your client to the HDInsight cluster.

Importante

Você pode proteger as chaves usando uma frase secreta.You can secure your keys using a passphrase. Uma frase secreta é efetivamente uma senha na chave privada.A passphrase is effectively a password on your private key. Mesmo se alguém obtiver a chave privada, deverá ter a senha para usar a chave.Even if someone obtains your private key, they must have the passphrase to use the key.

Criar o HDInsight usando a chave públicaCreate HDInsight using the public key

Método de criaçãoCreation method Como usar a chave públicaHow to use the public key
Portal do AzureAzure portal Desmarque __usar senha de logon do cluster para SSH__e, em seguida, selecione chave pública como o tipo de autenticação SSH.Uncheck Use cluster login password for SSH, and then select Public Key as the SSH authentication type. Por fim, selecione o arquivo de chave pública ou cole o conteúdo do arquivo de texto do campo Chave pública SSH.Finally, select the public key file or paste the text contents of the file in the SSH public key field.
Caixa de diálogo de chave pública SSH na criação do cluster HDInsightSSH public key dialog in HDInsight cluster creation
Azure PowerShellAzure PowerShell Use o parâmetro -SshPublicKey do cmdlet New-AzHdinsightCluster e passe o conteúdo da chave pública como uma cadeia de caracteres.Use the -SshPublicKey parameter of the New-AzHdinsightCluster cmdlet and pass the contents of the public key as a string.
CLI do AzureAzure CLI Use o parâmetro --sshPublicKey do comando AZ hdinsight Create e passe o conteúdo da chave pública como uma cadeia de caracteres.Use the --sshPublicKey parameter of the az hdinsight create command and pass the contents of the public key as a string.
Modelo do Resource ManagerResource Manager Template Para obter um exemplo de como usar chaves SSH com um modelo, confira Implantar o HDInsight no Linux com uma chave SSH.For an example of using SSH keys with a template, see Deploy HDInsight on Linux with SSH key. O elemento publicKeys o arquivo azuredeploy.json são usados para passar as chaves do Azure ao criar o cluster.The publicKeys element in the azuredeploy.json file is used to pass the keys to Azure when creating the cluster.

Autenticação: SenhaAuthentication: Password

Contas SSH podem ser protegidas usando uma senha.SSH accounts can be secured using a password. Ao se conectar ao HDInsight usando SSH, você será solicitado a inserir a senha.When you connect to HDInsight using SSH, you're prompted to enter the password.

Aviso

A Microsoft não recomenda o uso da autenticação de senha para o SSH.Microsoft does not recommend using password authentication for SSH. As senhas podem ser adivinhadas e são vulneráveis a ataques de força bruta.Passwords can be guessed and are vulnerable to brute force attacks. Em vez disso, é recomendável usar chaves SSH para autenticação.Instead, we recommend that you use SSH keys for authentication.

Importante

A senha da conta SSH expira 70 dias depois da criação do cluster HDInsight.The SSH account password expires 70 days after the HDInsight cluster is created. Se a senha expirar, você pode alterá-la usando as informações do documento Gerenciar HDInsight.If your password expires, you can change it using the information in the Manage HDInsight document.

Criar o HDInsight usando uma senhaCreate HDInsight using a password

Método de criaçãoCreation method Como especificar a senhaHow to specify the password
Portal do AzureAzure portal Por padrão, a conta de usuário SSH tem a mesma senha que a conta de logon do cluster.By default, the SSH user account has the same password as the cluster login account. Para usar uma senha diferente, desmarque __usar senha de logon do cluster para SSH__e, em seguida, insira a senha no campo senha ssh .To use a different password, uncheck Use cluster login password for SSH, and then enter the password in the SSH password field.
Caixa de diálogo de senha SSH na criação do cluster HDInsightSSH password dialog in HDInsight cluster creation
Azure PowerShellAzure PowerShell 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.Use the --SshCredential parameter of the New-AzHdinsightCluster cmdlet and pass a PSCredential object that contains the SSH user account name and password.
CLI do AzureAzure CLI Use o parâmetro --sshPassword do comando AZ hdinsight Create e forneça o valor da senha.Use the --sshPassword parameter of the az hdinsight create command and provide the password value.
Modelo do Resource ManagerResource Manager Template Para obter um exemplo de como usar uma senha com um modelo, confira Implantar o HDInsight no Linux com uma senha SSH.For an example of using a password with a template, see Deploy HDInsight on Linux with SSH password. 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.The linuxOperatingSystemProfile element in the azuredeploy.json file is used to pass the SSH account name and password to Azure when creating the cluster.

Alterar a senha SSHChange the SSH password

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.For information on changing the SSH user account password, see the Change passwords section of the Manage HDInsight document.

Autenticação: HDInsight ingressado no domínioAuthentication: Domain-joined HDInsight

Se você estiver usando um cluster HDInsight ingressado no domínio, deverá usar o comando kinit após a conexão com o usuário local SSH.If you're using a domain-joined HDInsight cluster, you must use the kinit command after connecting with SSH local user. Este comando solicita um usuário de domínio e uma senha e autentica a sessão com o domínio do Azure Active Directory associado ao cluster.This command prompts you for a domain user and password, and authenticates your session with the Azure Active Directory domain associated with the cluster.

Você também pode 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.You can also enable Kerberos Authentication on each domain joined node (for example, head node, edge node) in order to ssh using the domain account. Para fazer isso, edite o arquivo de configuração do sshd:To do this edit sshd config file:

sudo vi /etc/ssh/sshd_config

remova os comentários e altere KerberosAuthentication para yesuncomment and change KerberosAuthentication to yes

sudo service sshd restart

A qualquer momento, para verificar se a autenticação Kerberos foi bem-sucedida ou não, use o comando klist.At any time, in order to verify whether the Kerberos authentication was successful or not, use klist command.

Para obter mais informações, confira Configurar o HDInsight associado ao domínio.For more information, see Configure domain-joined HDInsight.

Conectar os nósConnect to nodes

Os nós principais e o nó de borda (se houver) podem ser acessados pela Internet nas portas 22 e 23.The head nodes and edge node (if there is one) can be accessed over the internet on ports 22 and 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.When connecting to the head nodes, use port 22 to connect to the primary head node and port 23 to connect to the secondary head node. O nome de domínio totalmente qualificado a usar é clustername-ssh.azurehdinsight.net, no qual clustername é o nome do cluster.The fully qualified domain name to use is clustername-ssh.azurehdinsight.net, where clustername is the name of your 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.When connecting to the edge node, use port 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.The fully qualified domain name is edgenodename.clustername-ssh.azurehdinsight.net, where edgenodename is a name you provided when creating the edge node. clustername é o nome do cluster.clustername is the name of the 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.The previous examples assume that you are using password authentication, or that certificate authentication is occurring automatically. 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.If you use an SSH key-pair for authentication, and the certificate is not used automatically, use the -i parameter to specify the private key. Por exemplo: ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.For example, ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net.

Uma vez conectado, o prompt é alterado para indicar o nome de usuário SSH e o nó ao qual você está conectado.Once connected, the prompt changes to indicate the SSH user name and the node you're connected to. Por exemplo, quando conectado ao nó principal primário como sshuser, o prompt é sshuser@hn0-clustername:~$.For example, when connected to the primary head node as sshuser, the prompt is sshuser@hn0-clustername:~$.

Conectar o trabalho e nós do Apache ZooKeeperConnect to worker and Apache Zookeeper nodes

Os nós de trabalho e os nós Zookeeper não são diretamente acessíveis pela Internet.The worker nodes and Zookeeper nodes aren't directly accessible from the internet. Eles podem ser acessados dos nós principais do cluster ou do nós de borda.They can be accessed from the cluster head nodes or edge nodes. A seguir estão as etapas gerais para se conectar-se a outros nós:The following are the general steps to connect to other nodes:

  1. Use o SSH para se conectar a um nó de cabeçalho ou de borda:Use SSH to connect to a head or edge node:

    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:From the SSH connection to the head or edge node, use the ssh command to connect to a worker node in the 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.To retrieve a list of the node names, see the Manage HDInsight by using the Apache Ambari REST API document.

Se a conta SSH é protegida com senha, digite a senha ao se conectar.If the SSH account is secured using a password, enter the password when connecting.

Se a conta SSH é protegida usando chaves SSH, verifique se o encaminhamento de SSH está habilitado no cliente.If the SSH account is secured using SSH keys, make sure that SSH forwarding is enabled on the client.

Observação

Outra maneira de acessar diretamente todos os nós do cluster é instalar o HDInsight em uma Rede Virtual do Azure.Another way to directly access all nodes in the cluster is to install HDInsight into an Azure Virtual Network. Em seguida, você pode associar o computador remoto à mesma rede virtual e acessar diretamente todos os nós no cluster.Then, you can join your remote machine to the same virtual network and directly access all nodes in the cluster.

Para obter mais informações, consulte planejar uma rede virtual para o HDInsight.For more information, see Plan a virtual network for HDInsight.

Configurar o encaminhamento do agente SSHConfigure SSH agent forwarding

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.The following steps assume a Linux or UNIX-based system, and work with Bash on Windows 10. Se essas etapas não funcionarem para o seu sistema, você precisará conferir a documentação de seu cliente SSH.If these steps do not work for your system, you may need to consult the documentation for your SSH client.

  1. Usando um editor de texto, abra ~/.ssh/config.Using a text editor, open ~/.ssh/config. Se esse arquivo não existir, você poderá criá-lo digitando touch ~/.ssh/config na linha de comando.If this file doesn't exist, you can create it by entering touch ~/.ssh/config at a command line.

  2. Adicione o texto a seguir ao arquivo config.Add the following text to the config file.

    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.Replace the Host information with the address of the node you connect to using SSH. O exemplo anterior usa o nó de borda.The previous example uses the edge node. Essa entrada configura o encaminhamento de agente SSH para o nó especificado.This entry configures SSH agent forwarding for the specified node.

  3. Teste o encaminhamento do agente SSH usando o seguinte comando no terminal:Test SSH agent forwarding by using the following command from the terminal:

    echo "$SSH_AUTH_SOCK"
    

    Esse comando retorna informações semelhantes ao seguinte texto:This command returns information similar to the following text:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    Se nada for retornado, ssh-agent não será executado.If nothing is returned, then ssh-agent isn't running. Para saber mais, confira as informações de scripts de inicialização de agente em Usando ssh-agent com ssh (http://mah.everybody.org/docs/ssh)) ou confira a documentação do cliente SSH.For more information, see the agent startup scripts information at Using ssh-agent with ssh (http://mah.everybody.org/docs/ssh) or consult your SSH client documentation.

  4. Depois de verificar se o ssh-agent está em execução, use o seguinte para adicionar sua chave privada SSH ao agente:Once you've verified that ssh-agent is running, use the following to add your SSH private key to the agent:

    ssh-add ~/.ssh/id_rsa
    

    Se a chave privada estiver armazenada em um arquivo diferente, substitua ~/.ssh/id_rsa pelo caminho para o arquivo.If your private key is stored in a different file, replace ~/.ssh/id_rsa with the path to the file.

  5. Conecte-se ao nó de borda de cluster ou aos nós de cabeçalho usando o SSH.Connect to the cluster edge node or head nodes using SSH. Em seguida, use o comando SSH para se conectar a um nó de trabalho ou zookeeper.Then use the SSH command to connect to a worker or zookeeper node. A conexão é estabelecida usando a chave encaminhada.The connection is established using the forwarded key.

Copiar arquivosCopy files

O utilitário scp pode ser usado para copiar arquivos de e para os nós individuais no cluster.The scp utility can be used to copy files to and from individual nodes in the cluster. Por exemplo, o comando a seguir copia o diretório test.txt do sistema local para o nó principal primário:For example, the following command copies the test.txt directory from the local system to the primary head node:

scp test.txt sshuser@clustername-ssh.azurehdinsight.net:

Como nenhum caminho é especificado após :, o arquivo é colocado no diretório base sshuser.Since no path is specified after the :, the file is placed in the sshuser home directory.

O exemplo a seguir copia o arquivo test.txt do diretório base sshuser no nó principal primário para o sistema local:The following example copies the test.txt file from the sshuser home directory on the primary head node to the local system:

scp sshuser@clustername-ssh.azurehdinsight.net:test.txt .

Importante

scp só pode acessar o sistema de arquivos de nós individuais dentro do cluster.scp can only access the file system of individual nodes within the cluster. Ele não pode ser usado para acessar os dados no armazenamento compatível com o HDFS para o cluster.It cannot be used to access data in the HDFS-compatible storage for the cluster.

Use scp quando precisar carregar um recurso para usar em uma sessão SSH.Use scp when you need to upload a resource for use from an SSH session. Por exemplo, carregue um script Python, em seguida, execute o script em uma sessão SSH.For example, upload a Python script and then run the script from an SSH session.

Para obter informações sobre como carregar diretamente os dados no armazenamento compatível com o HDFS, consulte os seguintes documentos:For information on directly loading data into the HDFS-compatible storage, see the following documents:

Próximas etapasNext steps