Error en conectividad SSH sin contraseña al instalar Grid Infrastructure 19c en RHEL8
Siguiendo con la instalación de Grid Infrastructure 19c sobre RedHat 8, además de otros errores que me he ido encontrando y que ya he publicado aquí (Error «clientSupportedOSCheck» al instalar Oracle en Red Hat 8 y Error de Perl: warning: Setting locale failed al ejecutar ASMCMD) hoy voy a desgranar otro, que costó bastante encontrar.
El error hablaba sobre un problema con la relación de confianza que había creado entre los nodos. Según la documentación oficial, debe ser posible conectarse de un nodo a otro sin contraseña. Además, hay que forzar una primera conexión para que se cree el fichero known_hosts y se añada ahí la confianza en ese host, para evitar la típica pregunta…
[oracle@SERVIDOR1 ]$ ssh servidor2
The authenticity of host 'servidor2 (10.10.0.10)' can't be established.
ECDSA key fingerprint is SHA256:PVcTkwHowazFaeJ+Jo6C7+uAAPvV0OS6nEWGlD1tEZU.
ECDSA key fingerprint is MD5:01:d7:qc:53:58:9r:81:62:5a:d2:f3:18:35:za:0s:jb.
Are you sure you want to continue connecting (yes/no)?
Y era posible, se podía conectar, y ya no saltaba la pregunta de autenticación. Lo probé de todas las maneras posibles. Revisé la relación de confianza varias veces, la borré, la volví a crear, seguía funcionando bien, pero a Oracle no le gustaba.
¿Quieres saber realmente qué ocurría y como lo solucioné? ⤵️
El Error
[INS-44000] La conectividad SSH sin contraseña no se ha configurado desde el nodo local SERVIDOR1 en los siguientes nodos:
[servidor2]
Acción - Consulte los logs para obtener más información o póngase en contacto con los Servicios de Soporte Oracle.
Información Adicional:
Resumen de errores específicos de nodo servidor2 -
[INS-06006] No se ha establecido ninguna conectividad SSH sin contraseña entre los siguientes nodos: [servidor2].
Análisis del error
Como mencionaba anteriormente, probé de todo.
Eliminé la relación de confianza, la volví a crear manualmente.
La volví a borrar, la cree con el asistente de instalación de Oracle, tampoco funcionó.
La cree enviando los ficheros por scp de un servidor a otro, no funcionó.
La cree copiando y pegando el contenido de las claves públicas en texto plano entre los dos servidores, no funcionó.
Y cuando digo que no funcionó, es que no funcionó para el instalador de oracle, porque la relación de confianza mediante conexión SSH era correcta, y funcionaba a las mil maravillas.
Por último, lancé el instalador gráfico en modo debug.
[oracle@servidor1]$ ./gridSetup.sh -debug
Esto comienza a soltar una cantidad de líneas brutal, por lo que hay que estar muy pendiente del error que buscas y de cuando salta, si no quieres leerte un log con miles de líneas.
Al principio veía muchos errores relacionados, que me hablaban de la ejecución de otros scripts, pero por más que leía los scripts referenciados, no encontraba nada que comprobara la relación de confianza.
PRVG-11001 : Fallo al ejecutar el comando "/tmp/GridSetupActions2024-10-08_09-44-58AM/CVU_1728374182340_SSH_SETUP/exectask.sh -setupUserEquivalence -reuseKeys -tracelevel 0" en el nodo "SERVIDOR1"
PRCZ-2136 : Fallo al ejecutar el comando "/tmp/GridSetupActions2024-10-08_09-44-58AM/CVU_1728374182340_SSH_SETUP/exectask.sh" como usuario "oracle" en 10 segundos en los nodos "SERVIDOR2".
PRCZ-2006 : No se ha podido establecer la conexión SSH con el nodo "SERVIDOR2" para ejecutar el comando "/tmp/GridSetupActions2024-10-08_09-44-58AM/CVU_1728374182340_SSH_SETUP/exectask.sh -setupUserEquivalence -reuseKeys -tracelevel 0"
El error que encuentro que me afecta es el siguiente:
UnixSystem: /usr/bin/scp -p SERVIDOR2:'/tmp/GridSetupActions2024-10-08_10-13-36AM/CVU_19.0.0.0.0_oracle/scratch/getFileInfo41869.out' /tmp/GridSetupActions2024-10-08_10-13-36AM/servidor2.getFileInfo41869.out
Causa del Error
Habitual en mi día a día es la consulta en My Oracle Support de cualquier error. Tras una primera búsqueda, me encuentro la siguiente nota:
11.2.0.4 runInstaller: [INS-06006] Passwordless SSH connectivity not set up between the following nodes(s) (Doc ID 1597212.1)
Básicamente habla sobre un bug en el que los nombres de los nodos no pueden estar en mayúscula.
Lo consulto:
[oracle@SERVIDOR1]$ hostname
SERVIDOR1
[oracle@SERVIDOR1]$ hostname -f
servidor1
Y si, los nombres de mis servidores están en mayúscula. Seguro que es por esto (me digo a mi mismo). Cambio el nombre de los servidores con hostnamectl. Reinicio los servidores, vuelvo a lanzar el instalador con plena confianza de haber salvado el error de la conexión SSH entre nodos…
Y NADA! 🤦🏼♂️ El error ahí sigue, exactamente el mismo. No me deja continuar la instalación porque no puede acceder al servidor2.
Encuentro otra nota sobre la instalación paso a paso en modo silencioso donde también aparecía el código de error «[INS-44000]» que había aparecido desde el principio.
Step by Step Out of Place Grid Infrastructure Patching Through gridSetup.sh in Silent Mode (Doc ID 2853839.1)
[FATAL] [INS-44000] Passwordless SSH connectivity is not setup from the local node <local node> to the following nodes:
[<remote node>]
These nodes will be ignored and not participate in the configured Grid Infrastructure.
Check if [INS-06006] appears after the message [INS-44000]
1) If yes, then
Cause: scp behaviour differs on high version of openSSH.
Example
ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020
Leyendo detenidamente la nota, indica una solución en caso de que tras el error «[INS-44000]» aparezca el error «[INS-06006]» como es en nuestro caso:
[INS-44000] La conectividad SSH sin contraseña no se ha configurado desde el nodo local SERVIDOR1 en los siguientes nodos:
[servidor2]
Acción - Consulte los logs para obtener más información o póngase en contacto con los Servicios de Soporte Oracle.
Información Adicional:
Resumen de errores específicos de nodo servidor2 -
[INS-06006] No se ha establecido ninguna conectividad SSH sin contraseña entre los siguientes nodos: [servidor2].
La causa: la versión de OpenSSH que está instalada por defecto en Red Hat 8 o podría también estar en Oracle Linux 8.
[root@servidor1~]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021
Solución
En esta última nota aparece una solución, que a priori no entendía. No veía una relación directa a comprobar la conectividad SSH y la relación de confianza con el comando SCP que se usa para copiar ficheros por red.
Action: <On all nodes>
# Rename the original scp.
mv /usr/bin/scp /usr/bin/scp.orig
# Create a new file </usr/bin/scp>.
vi /usr/bin/scp
# Add the below line to the new created file </usr/bin/scp>.
/usr/bin/scp.orig -T $*
# Change the file permission.
chmod 555 /usr/bin/scp
After installation:
mv /usr/bin/scp.orig /usr/bin/scp
Note: If SCP is a link and not a physical location then the workaround should be done at the physical location not link.
(Ref Doc ID 2555697.1)
2) Else, please check basic Passwordless SSH connectivity issue for 'grid' user.
Después recordé el error que apareció en el debug del instalador, y relacioné la comprobación de conexión SSH sin contraseña con hacer el envío de un fichero y que este se complete con éxito.
UnixSystem: /usr/bin/scp -p servidor2:'/tmp/GridSetupActions2024-10-08_10-13-36AM/CVU_19.0.0.0.0_oracle/scratch/getFileInfo41869.out' /tmp/GridSetupActions2024-10-08_10-13-36AM/servidor2.getFileInfo41869.out
Así que sí, tras realizar los pasos indicados en la nota, y volver a probar la instalación, ahora sí que comprobó correctamente la relación de confianza, la conexión SSH sin contraseña y el envío del fichero con scp y pude terminar con la instalación del software de GRID correctamente.
Otro pasito más hacia el final del túnel. 😉