Problemas de conexión a una sesión

Corrija los problemas que se pueden producir al intentar conectarse a una sesión existente.

En general, para solucionar problemas de comandos SSH, agregue la opción detallada (-v). Por ejemplo:

ssh -v -i <private_key> -N -L <local_port>:<target_IP>:<port> <bastion>
Nota

No utilice las opciones -vv ni -vvv.

No se ha podido conectar a una sesión mediante SSH y una clave pública

Cuando utiliza SSH y una clave pública para conectarse a un SSH gestionado o una sesión de reenvío de puerto (también conocida como túnel SSH), la conexión falla y se muestra el siguiente mensaje:

Permission denied (publickey)

Para resolver el problema, edite el archivo ~/.ssh/config y agregue las siguientes líneas:

Host *
    HostKeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa
Nota

Utilice * para el host en el archivo de configuración SSH para acceder tanto al host bastión como al host de destino. También puede agregar host.bastion.*.oci.* y todas las direcciones IP privadas del host de destino al archivo de configuración SSH.

Consulte la sección sobre conexión a la instancia para obtener más ayuda.

La dirección IP no está en la lista de permitidos de bastión

Al crear un bastión, especifique una lista de permitidos del bloque de CIDR. Agregue uno o más rangos de direcciones en notación CIDR cuya conexión desee permitir a las sesiones alojadas en este bastión.

Si la dirección IP de la máquina local no está en la lista de permitidos, el comando SSH falla con este mensaje:

Enter passphrase for key 'id_rsa': <your_passphrase>
...
Connection to host.bastion.<region>.oci.oraclecloud.com closed by remote host.

Edite el bastión y verifique que la dirección IP de la máquina local esté en la lista de permitidos de bloque de CIDR. Después de cambiar la lista de permitidos, también debe crear una nueva sesión. Este cambio no afecta a las sesiones existentes.

La VCN no permite el tráfico de entrada de bastión

La VCN (red virtual en la nube)  y la subred en la que se ha creado el recurso de destino deben permitir el tráfico de red entrante desde el bastión en el puerto de destino.

Al intentar conectarse a una sesión SSH gestionada, la conexión sufre un timeout después de varios minutos e imprime este mensaje:

Enter passphrase for key 'id_rsa': <your_passphrase>
...
kex_exchange_identification: Connection closed by remote host

Para una sesión de reenvío de puerto, la conexión SSH inicial se realiza correctamente, pero, en cualquier momento, se produce un timeout en el túnel SSH después de varios minutos e imprime el mismo mensaje de error.

Por ejemplo, si deseas utilizar una sesión para conectarse al puerto 8001 en una instancia informática desde un bastión con la dirección IP 192.168.0.99, la subred utilizada para acceder a la instancia debe permitir el tráfico de entrada desde 192.168.0.99 en la dirección 8001.

La lista de seguridad por defecto para una subred permite el tráfico de entrada al puerto SSH 22 desde cualquier dirección IP, pero esta regla se puede cambiar o suprimir. Además, la lista de seguridad por defecto para una subred no suele permitir el tráfico de entrada de cualquier dirección IP a otros números de puerto, como:

  • 1521: Oracle Database
  • 3306: MySQL Database
  • 3389: protocolo de escritorio remoto (RDP)

Actualice la lista de seguridad de la subred de destino y agregue la dirección IP del bastión. Consulte Cómo permitir el acceso de red desde el bastión.

El comando de reenvío de puertos no responde

Al utilizar SSH para conectarse a una sesión de reenvío de puerto (también conocida como túnel SSH), el proceso no sale después de introducir la frase de contraseña de clave privada. Este resultado es normal. No cierre el terminal.

Para verificar que el túnel SSH se haya creado correctamente, puede volver a ejecutar el comando SSH con una salida detallada. Los mensajes finales después de una conexión correcta son:

debug1: Entering interactive session.
debug1: pledge: network

Después de crear el túnel SSH, utilice una aplicación adecuada para conectarse al recurso de destino mediante el puerto local especificado en el comando SSH: localhost:local port o 127.0.0.1:local port.

Por ejemplo, para utilizar una sesión de reenvío de puerto en Oracle Database, abra Oracle SQL Developer y conéctese a localhost:1521.

Consulte Conexión a sesiones en bastión para ver más ejemplos.

La conexión inactiva está cerrada

Por defecto, el servidor SSH cierra una conexión inactiva después de 5 minutos. Para evitar que se cierren las conexiones inactivas, configure el cliente SSH para enviar paquetes vacíos al servidor con regularidad.

Por ejemplo, en Linux, cree o edite el archivo ~/.ssh/config y agregue las siguientes líneas:

Host *
    ServerAliveInterval 120
    ServerAliveCountMax 3

En este ejemplo, los paquetes vacíos se envían cada dos minutos (120 segundos) y el cliente realiza un máximo de tres intentos.