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:
Cliente OpenSSH. Este cliente é um recurso opcional introduzido no Windows 10 Fall Creators Update.
Azure Cloud Shell. O Cloud Shell fornece um ambiente Bash no seu navegador.
Git.
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. |
Azure PowerShell | Use o -SshPublicKey parâmetro do cmdlet New-AzHdinsightCluster e passe o 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. |
Azure PowerShell | Use o --SshCredential parâmetro do cmdlet New-AzHdinsightCluster e passe um PSCredential objeto que contenha o 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 queclustername
é 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 queedgenodename
é 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:
Utilizar o SSH para ligar a um nó principal ou de extremidade:
ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
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.
Utilizando um editor de texto, abra
~/.ssh/config
. Se este ficheiro não existir, pode criá-lo ao introduzirtouch ~/.ssh/config
na linha de comandos.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.
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.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.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
- Use SSH tunneling with HDInsight (Utilizar túnel SSH com o HDInsight)
- Use edge nodes in HDInsight (Utilizar nós de extremidade no HDInsight)
- Usar o SCP com o HDInsight