Conexión a HDInsight (Apache Hadoop) mediante SSH
Aprenda a usar Secure Shell (SSH) para conectarse de forma segura a Apache Hadoop en Azure HDInsight. Para obtener información acerca de cómo conectarse a través de una red virtual, consulte Arquitectura de red virtual de Azure HDInsight. Vea también Planeamiento de la implementación de una red virtual para clústeres de Azure HDInsight.
La tabla siguiente contiene la información de dirección y puerto necesaria para conectarse a HDInsight a través de un cliente SSH:
Dirección | Port | Se conecta a... |
---|---|---|
<clustername>-ssh.azurehdinsight.net |
22 | Nodo principal primario |
<clustername>-ssh.azurehdinsight.net |
23 | Nodo principal secundario |
<edgenodename>.<clustername>-ssh.azurehdinsight.net |
22 | Nodo perimetral (cualquier otro tipo de clúster, si existe un nodo perimetral) |
Reemplace <clustername>
por el nombre del clúster. Reemplace <edgenodename>
con el nombre del nodo perimetral.
Si el clúster contiene un nodo perimetral, se recomienda que siempre se conecte al nodo perimetral mediante SSH. Los nodos principales hospedan servicios que son críticos para el estado de Hadoop. El nodo perimetral ejecuta solo lo que incluya en él. Para más información, consulte Uso de nodos perimetrales en HDInsight.
Sugerencia
Cuando se conecte por primera vez a HDInsight, el cliente SSH puede mostrar una advertencia de que no se puede establecer la autenticidad del host. Cuando se le pida, seleccione "sí" para agregar el host a la lista de servidores de confianza de su cliente SSH.
Si se ha conectado anteriormente a un servidor con el mismo nombre, puede recibir una advertencia de que la clave del host almacenada no coincide con la del servidor. Consulte la documentación del cliente SSH sobre cómo el nombre del servidor existente.
Clientes SSH
Los sistemas Linux, Unix y macOS proporcionan los comandos ssh
y scp
. El cliente ssh
se usa normalmente para crear una sesión de línea de comandos remota con un sistema basado en Unix o Linux. El cliente scp
se usa para copiar archivos entre el cliente y el sistema remoto de forma segura.
Microsoft Windows no instala los clientes SSH de forma predeterminada. Los clientes ssh
y scp
están disponibles para Windows a través de los siguientes paquetes:
Cliente OpenSSH: Este cliente es una característica opcional que se introdujo en Windows 10 Fall Creators Update.
Azure Cloud Shell. Cloud Shell proporciona un entorno de Bash en el explorador.
Git.
También hay varios clientes SSH gráficos, como PuTTY y MobaXterm. Aunque estos clientes se pueden usar para conectar con HDInsight, el proceso de conexión es diferente a usar la utilidad ssh
. Para más información, consulte la documentación del cliente gráfico que esté usando.
Autenticación: claves SSH
Las claves SSH utilizan criptografía de clave pública para autenticar las sesiones de SSH. Las claves SSH son más seguras que las contraseñas y proporcionan una manera fácil para proteger el acceso al clúster de Hadoop.
Si su cuenta SSH se protege utilizando una clave, el cliente tiene que proporcionar la clave privada correspondiente al conectarse:
La mayoría de los clientes pueden configurarse para utilizar una clave predeterminada. Por ejemplo, el cliente
ssh
busca una clave privada en~/.ssh/id_rsa
en entornos Linux y Unix.Puede especificar la ruta de acceso a una clave privada. Con el cliente
ssh
, el parámetro-i
se utiliza para especificar la ruta de acceso a la clave privada. Por ejemplo,ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net
.Si tiene varias claves privadas para su uso con distintos servidores, considere la posibilidad de usar una utilidad como ssh-agent (https://en.wikipedia.org/wiki/Ssh-agent). La utilidad
ssh-agent
se puede usar para seleccionar automáticamente la clave que se usará al establecer una sesión de SSH.
Importante
Si se protege la clave privada con una frase de contraseña, tiene que escribir la frase de contraseña cuando se use la clave. Utilidades como ssh-agent
puede almacenar en caché la contraseña para su comodidad.
Creación de un par de claves SSH
Use el comando ssh-keygen
para crear archivos de clave pública y privada. El comando siguiente genera un par de claves de RSA de 2048 bits que puede utilizarse con HDInsight:
ssh-keygen -t rsa -b 2048
Se le pedirá información durante el proceso de creación de claves. Por ejemplo, dónde se almacenan las claves o si se debe usar una frase de contraseña. Una vez completado el proceso, se crean dos archivos: una clave pública y una clave privada.
La clave pública se utiliza para crear un clúster de HDInsight. La clave pública tiene una extensión
.pub
.La clave privada se utiliza para autenticar el cliente al clúster de HDInsight.
Importante
Puede proteger las claves con una frase de contraseña. Una frase de contraseña es efectivamente una contraseña de la clave privada. Incluso si alguien obtiene la clave privada, tienen que tener la frase de contraseña para poder usar la clave.
Creación de HDInsight usando la clave pública
Método de creación | Cómo usar la clave pública |
---|---|
Azure Portal | Desactive la opción Usar contraseña de inicio de sesión de clúster para SSH y, a continuación, seleccione Clave pública como el tipo de autenticación de SSH. Por último, seleccione el archivo de clave pública o pegue el contenido de texto del archivo en el campo Clave pública SSH. |
Azure PowerShell | Use el parámetro -SshPublicKey del cmdlet New-AzHdinsightCluster y pase el contenido de la clave pública como una cadena. |
Azure CLI | Use el parámetro --sshPublicKey del comando az hdinsight create y pase el contenido de la clave pública como una cadena. |
Plantilla de Resource Manager | Para obtener un ejemplo del uso de claves SSH con una plantilla, consulte la implementación de HDInsight en Linux con una clave SSH. El elemento publicKeys en el archivo azuredeploy.json se usa para pasar las claves a Azure al crear el clúster. |
Autenticación: contraseña
Las cuentas SSH se pueden proteger mediante una contraseña. Cuando se conecte a HDInsight usando SSH, se le pedirá que escriba la contraseña.
Advertencia
Microsoft no recomienda usar la autenticación de contraseña para SSH. Las contraseñas se pueden adivinar y son vulnerables a ataques por fuerza bruta. En su lugar, recomendamos que use claves SSH para la autenticación.
Importante
La contraseña de la cuenta SSH expira 70 días después de crear el clúster de HDInsight. Si la contraseña expira, se puede cambiar con la información del documento sobre la administración de HDInsight.
Creación de HDInsight usando una contraseña
Método de creación | Cómo especificar la contraseña |
---|---|
Azure Portal | De forma predeterminada, la cuenta de usuario SSH tiene la misma contraseña que la cuenta de inicio de sesión de clúster. Para usar una contraseña diferente, desactive la opción Uso de la contraseña de inicio de sesión del clúster para SSH y, a continuación, escriba la contraseña en el campo Contraseña SSH. |
Azure PowerShell | Use el parámetro --SshCredential del cmdlet New-AzHdinsightCluster y pase un objeto PSCredential que contenga el nombre de cuenta de usuario SSH y la contraseña. |
Azure CLI | Use el parámetro --ssh-password del comando az hdinsight create y proporcione el valor de contraseña. |
Plantilla de Resource Manager | Para obtener un ejemplo del uso de contraseña con una plantilla, consulte la implementación de HDInsight en Linux con una contraseña SSH. El elemento linuxOperatingSystemProfile en el archivo azuredeploy.json se usa para pasar el nombre de cuenta de SSH y la contraseña a Azure al crear el clúster. |
Cambio de contraseña de SSH
Para información acerca de cómo cambiar la contraseña de cuenta de usuario SSH, consulte la sección Cambio de contraseñas del documento sobre administración de HDInsight.
Autenticación de HDInsight unido a un dominio
Si está usando un clúster de HDInsight unido a un dominio, tiene que utilizar el comando kinit
después de conectarse con el usuario local de SSH. Este comando le pide un usuario de dominio y una contraseña y autentica la sesión con el dominio de Microsoft Entra asociado con el clúster.
También puede habilitar la autenticación Kerberos en cada nodo unido a un dominio (por ejemplo, nodo principal, nodo perimetral) para realizar un ssh mediante la cuenta de dominio. Para ello, edite el archivo de configuración de sshd:
sudo vi /etc/ssh/sshd_config
Quite los comentarios y cambie KerberosAuthentication
a yes
sudo service sshd restart
Utilice el comando klist
para verificar si la autenticación Kerberos se realizó correctamente.
Para más información, consulte Configuración de clústeres de HDInsight unidos a un dominio.
Conexión a nodos
Los nodos principales y el nodo perimetral (si hay alguno) son accesibles a través de Internet en los puertos 22 y 23.
Cuando se conecte a los nodos principales, use el puerto 22 para conectarse al nodo principal primario y el puerto 23 para conectarse al nodo principal secundario. El nombre de dominio completo que se debe usar es
clustername-ssh.azurehdinsight.net
, dondeclustername
es el nombre del clúster.# 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
Al conectarse al nodo perimetral, utilice el puerto 22. El nombre de dominio completo es
edgenodename.clustername-ssh.azurehdinsight.net
, dondeedgenodename
es el nombre que proporcionó al crear el nodo perimetral.clustername
es el nombre del clúster.# Connect to edge node ssh sshuser@edgnodename.clustername-ssh.azurehdinsight.net
Importante
En los ejemplos anteriores se supone que está usando la autenticación con contraseña, o que la autenticación de certificados se está produciendo automáticamente. Si usa un par de claves SSH para la autenticación y el certificado no se utiliza automáticamente, use el parámetro -i
para especificar la clave privada. Por ejemplo, ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net
.
Una vez conectado, el símbolo del sistema cambia para indicar el nombre de usuario SSH y el nodo al que está conectado. Por ejemplo, cuando se conecta al nodo principal primario como sshuser
, el símbolo del sistema es sshuser@<active-headnode-name>:~$
.
Conexión a los nodos de Apache Zookeeper y de trabajo
Los nodos de trabajo y los nodos de Zookeeper no son directamente accesibles desde Internet. Solo se puede acceder a ellos desde los nodos principales y perimetrales del clúster. Estos son los pasos generales para conectarse a otros nodos:
Use SSH para conectarse al nodo principal o perimetral:
ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
En la conexión SSH con el nodo principal o perimetral, use el comando
ssh
para conectarse a un nodo de trabajador en el clúster:ssh sshuser@wn0-myhdi
Para recuperar una lista de los nombres de nodos, consulte el documento Administración de HDInsight con la API REST de Apache Ambari.
Si la cuenta SSH se protege utilizando un contraseña, escriba la contraseña al conectarse.
Si la cuenta SSH se protege utilizando claves SSH, asegúrese de que el reenvío de SSH está habilitado en el cliente.
Nota
Otra manera de obtener acceso directo a todos los nodos del clúster es instalar HDInsight en una instancia de Azure Virtual Network. A continuación, puede unir la máquina remota a la misma red virtual y tener acceso directamente a todos los nodos del clúster.
Para más información, consulte Planeamiento de una red virtual para HDInsight.
Configuración del reenvío del agente SSH
Importante
Los pasos siguientes presuponen un sistema basado en Linux o UNIX y funcionan con Bash en Windows 10. Si estos pasos no funcionan en su sistema, es posible que deba consultar la documentación para el cliente SSH.
Abra
~/.ssh/config
con un editor de texto. Si este archivo no existe, puede crearlo si escribetouch ~/.ssh/config
en la línea de comandos.Agregue al archivo
config
el texto siguiente.Host <edgenodename>.<clustername>-ssh.azurehdinsight.net ForwardAgent yes
Reemplace la información de Host con la dirección del nodo al que se conecta a través de SSH. El ejemplo anterior utiliza el nodo perimetral. Esta entrada configura el reenvío del agente SSH para el nodo especificado.
Use el siguiente comando desde el terminal para probar el desvío del agente SSH:
echo "$SSH_AUTH_SOCK"
Este comando devuelve información similar al texto siguiente:
/tmp/ssh-rfSUL1ldCldQ/agent.1792
Si no se devuelve nada,
ssh-agent
no se está ejecutando.Una vez que haya comprobado que ssh-agent está en ejecución, use lo siguiente para agregar la clave privada SSH al agente:
ssh-add ~/.ssh/id_rsa
Si la clave privada está almacenada en un archivo distinto, reemplace
~/.ssh/id_rsa
por la ruta de acceso al archivo.Conecte con el nodo perimetral o nodos principales del clúster usando SSH. A continuación, use el comando SSH para conectarse a un nodo de trabajo o de zookeeper. La conexión se establece mediante la clave reenviada.