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:
Cliente OpenSSH. O cliente é um recurso opcional introduzido no Windows 10 Fall Creators Update.
Azure Cloud Shell. O Cloud Shell fornece um ambiente Bash no navegador da Web.
Git.
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. |
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. |
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 qualclustername
é 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 qualedgenodename
é 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:
Use o SSH para se conectar a um nó de cabeçalho ou de borda:
ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
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.
Usando um editor de texto, abra
~/.ssh/config
. Se esse arquivo não existir, você poderá criá-lo digitandotouch ~/.ssh/config
na linha de comando.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.
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.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.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.