> For the complete documentation index, see [llms.txt](https://wiki.datadike.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.datadike.com/es/pam/administration/sessions/ssh.md).

# Sesiones SSH

Cómo alcanza un usuario un activo Linux, Unix o de red por SSH, desde el navegador o desde su propio cliente en el puerto 2222, y la cadena de conexión, el orden de autenticación y los interruptores g

## Qué es esto y cuándo usarlo

Para SSH la solución se comporta como un **bastion host**. El usuario se conecta a la solución, no al activo: la solución lo autentica, comprueba la autorización, abre la conexión con el destino usando la credencial almacenada y graba todo lo que viene después. El usuario nunca necesita la contraseña del activo.

Hay dos formas de entrar, y ambas producen la misma sesión grabada:

| Método             | Dónde se ejecuta                                       | Uso típico                                                                                  |
| ------------------ | ------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| **Web CLI**        | Un terminal en el navegador                            | Acceso del día a día, terceros, cualquiera sin cliente instalado                            |
| **Cliente nativo** | PuTTY, MobaXterm, Termius, OpenSSH, VS Code Remote-SSH | Ingenieros que quieren sus propias herramientas, acceso por clave, un panel lateral de SFTP |

{% hint style="warning" %}
Hay dos puertos en juego, y confundirlos es el error más habitual aquí. El puerto **22** es el puerto SSH del propio activo, que la solución usa para alcanzar el destino. El puerto **2222** es el listener SSH de la propia solución, y es a él al que se conecta un cliente nativo. El valor predeterminado es 2222 y no 22 para no chocar con el sshd del host donde se ejecuta la solución.
{% endhint %}

El acceso por cliente nativo puede apagarse para toda la plataforma, lo que obliga a que cada sesión SSH pase por el terminal grabado del navegador. Vea **Client connection** en la referencia de campos.

## Antes de empezar

* El activo registrado con el protocolo **SSH** en un puerto alcanzable, con OpenSSH en ejecución, también en Windows si pretende alcanzar un host Windows por SSH.
* Una cuenta en el activo, registrada en la solución.
* Una autorización que conceda al usuario ese activo, esa cuenta, el protocolo **SSH** y la acción **Conectar**. Consulte [Autorizaciones](/es/pam/administration/access/authorizations.md).
* El puerto **2222** abierto desde la estación del usuario hasta la dirección de la solución, si va a usar su propio cliente.
* Ninguna regla de [método de conexión](/es/pam/administration/sessions/connection-methods.md) que niegue el cliente que pretende usar.

## Conectarse desde el navegador

1. Abra la lista de acceso a dispositivos, haga clic derecho en el activo y elija conectar.
2. Seleccione el protocolo **SSH** en el menú de la izquierda del diálogo **Conectar**.
3. Elija la cuenta en **Seleccione una cuenta**.
4. Fije el método de conexión en **Web** y haga clic en **Conectar**.

## Conectarse desde un cliente nativo

Todos los clientes se configuran igual: el host es la dirección **de la solución**, el puerto es el **2222** y el nombre de usuario lleva la información de enrutamiento. Existen dos formatos de cadena:

```
# Interactivo: aterriza en un menú con los activos que tiene autorizados
ssh -p 2222 <pamUser>@<pamAddress>

# Directo: va derecho a un activo y una cuenta, sin menú
ssh -p 2222 <pamUser>@<assetAccount>@<assetAddress>@<pamAddress>
```

| Parámetro      | Significado                         | Ejemplo         |
| -------------- | ----------------------------------- | --------------- |
| `pamUser`      | Su nombre de usuario en la solución | `joao.silva`    |
| `assetAccount` | La cuenta en el activo de destino   | `root`          |
| `assetAddress` | La dirección del activo             | `192.168.1.100` |
| `pamAddress`   | La dirección de la solución         | `10.0.0.50`     |
| `-p 2222`      | El puerto SSH de la solución        | `2222`          |

La consola puede generar la cadena por usted, en dos formas adicionales que identifican el activo por su UUID en lugar de por su dirección:

```
# Credencial permanente
ssh <pamUser>#<accountName>#<assetUUID>@<pamAddress> -p 2222

# Token de conexión de un solo uso
ssh <token>@<pamAddress> -p 2222
```

{% hint style="warning" %}
Un token de conexión dura poco y viene con su propia contraseña de un solo uso. No guarde un token en `~/.ssh/config`: la entrada parecerá correcta y dejará de funcionar en cuanto el token caduque. Guarde entradas permanentes solo para la forma con credencial y para la forma manual.
{% endhint %}

### Llevar la cadena a `~/.ssh/config`

Los clientes que piden host, puerto y usuario por separado, incluida la extensión **Remote-SSH** de VS Code, necesitan la cadena troceada. La regla es la misma sea cual sea el formato de partida:

* todo lo que va **antes de la última `@`** se pone en `User`
* la dirección **posterior a la última `@`** se pone en `HostName`
* el número que sigue a `-p` se pone en `Port`

```
Host pam-prod-web
  HostName 10.0.0.50
  User joao.silva@root@192.168.1.100
  Port 2222
```

Después, conéctese con `ssh pam-prod-web`.

### Orden de autenticación

El cliente pregunta en secuencia, y lo que pide no es lo que sugieren los nombres de los mensajes:

1. **Password**: su contraseña *en la solución*, nunca la contraseña del activo.
2. **OTP code**: el código de seis dígitos de su aplicación de autenticación, solicitado solo cuando el MFA está habilitado en su cuenta. En un terminal normal llega como un mensaje `[MFA verify]`.

Para autenticarse con clave, genere un par, registre la mitad pública en **Configuración personal › Claves SSH** y conéctese con `-i`:

```
ssh-keygen -t rsa -b 4096 -f ~/.ssh/datadike_key
ssh -p 2222 -i ~/.ssh/datadike_key joao.silva@10.0.0.50
```

La solución también puede generar el par por usted. En ese caso, la clave privada se puede descargar **una sola vez**, justo después de crearla; si pierde esa descarga, el único remedio es crear otra clave.

## Lo que debe ver

La forma interactiva abre un menú con los activos que tiene autorizados, y elegir uno lo deja en un shell del destino. La forma directa se salta el menú. En cualquier caso, está en el activo con la cuenta que eligió, y `whoami` y `hostname` deben confirmarlo. Si informan del propio host de la solución, la parte de enrutamiento del nombre de usuario estaba mal y usted nunca salió del bastion.

## Cómo verificar que funcionó

1. Escriba algo identificable en la sesión y desconéctese.
2. Abra **Auditoría › Sesiones** y confirme que existe un registro con protocolo **SSH**, la cuenta que usó y su estación como dirección de origen.
3. Abra la pestaña **Comandos** de la sesión, o **Auditoría › Comandos**, y confirme que el comando que escribió está listado. Esta es la comprobación que prueba que la sesión fue realmente intermediada: una conexión que llegó directa al activo no deja registro de comandos.
4. Confirme que se ofrece **Replay** en la sesión terminada. Consulte [Grabaciones de sesión](/es/pam/administration/audit/recordings.md).

Si lo que cambió fue el acceso por cliente nativo, verifíquelo desde el lado del usuario: el diálogo **Conectar** ya no debe ofrecer el método de cliente para ningún activo.

## Errores comunes

| Síntoma                                            | Causa                                                                                      | Solución                                                                                                                                 |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Conexión rechazada, o expira en el 2222            | El listener SSH de la solución es inalcanzable                                             | Pruebe `telnet <pamAddress> 2222`; revise el firewall del camino y que los servicios de la plataforma estén en marcha                    |
| Credenciales rechazadas                            | Se escribió la contraseña del activo en lugar de la de la solución                         | Use su contraseña en la solución; la credencial del activo se inyecta por usted                                                          |
| Credenciales rechazadas con la contraseña correcta | Ninguna autorización cubre a este usuario, activo y cuenta                                 | Revise la regla: el activo, la cuenta y el protocolo SSH tienen que estar en ella                                                        |
| `Permission denied (publickey)`                    | Otros pueden leer el archivo de clave privada, o la clave no está registrada               | `chmod 400 key.pem` en Linux y macOS; `icacls "key.pem" /inheritance:r /grant:r "%username%:R"` en Windows                               |
| El cliente rechaza la cadena de conexión           | Los tramos con `@` están en el orden equivocado, o falta uno                               | Reconstrúyala como *pamUser\@assetAccount\@assetAddress\@pamAddress* y compruebe que la última `@` precede a la dirección de la solución |
| Un usuario dado de baja en el AD sigue entrando    | Su clave pública SSH sigue registrada y la autenticación por clave pública está habilitada | Deshabilite **Clave pública** cuando las identidades vengan del AD o de LDAP, según el aviso de más abajo                                |
| La sesión se cae estando inactiva                  | El tiempo de espera por inactividad la cerró                                               | Suba **Tiempo máximo de inactividad** en **Configuración del sistema › Seguridad › Sesiones**, o acepte el comportamiento                |
| "Session in use" al conectar                       | Otra sesión ya ocupa el activo                                                             | Espere, o pida a un administrador que cierre la anterior desde **Auditoría › Sesiones › En línea**                                       |

{% hint style="danger" %}
Si los usuarios se autentican por AD o LDAP, apague la **Clave pública**. Un usuario dado de baja en el directorio cuya clave pública siga registrada en la solución puede seguir abriendo sesiones SSH, pasando de largo por todo su proceso de baja. La autenticación por contraseña sigue al directorio; una clave registrada, no.
{% endhint %}

## Referencia de campos

Ajustes globales de terminal, en **Configuración del sistema › Componentes › Básico**, bajo **SSH & Terminal protocol**. Se aplican a todas las sesiones SSH, Telnet y SFTP de la plataforma:

| Campo             | Predeterminado | Qué hace                                                                                                                                                                       |
| ----------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Client connection | Habilitado     | Permite conexiones desde clientes SSH nativos. Deshabilitarlo quita la opción de cliente del diálogo **Conectar** y fuerza cada sesión al terminal del navegador               |
| Password          | Habilitado     | Permite la autenticación por contraseña contra el conector de terminal. La credencial del propio activo la inyecta la solución en cualquier caso y nunca se muestra al usuario |
| Public key        | Habilitado     | Permite la autenticación SSH por clave pública. Apáguelo cuando las identidades vengan del AD o de LDAP                                                                        |
| Asset sorting     | Name           | Orden de la lista de activos que se ofrece al conectar: **Name**, alfabéticamente, o **Address**, por IP o nombre de host                                                      |
| Asset page size   | Auto           | Activos por página en esa lista. **Auto** la ajusta a la ventana del usuario; fije un número para inventarios muy grandes                                                      |

Límites de sesión, en **Configuración del sistema › Seguridad › Sesiones**:

| Campo                                  | Predeterminado | Qué hace                                                               |
| -------------------------------------- | -------------- | ---------------------------------------------------------------------- |
| Tiempo máximo de inactividad (minutos) | 30             | Desconecta una sesión inactiva durante más tiempo que este             |
| Tiempo máximo en línea (horas)         | (sin valor)    | Desconecta una sesión abierta durante más tiempo que este, activa o no |

El puerto en el que la solución escucha SSH pertenece a la política de puertos TCP y su valor predeterminado es **2222**.

## Páginas relacionadas

* [Métodos de conexión](/es/pam/administration/sessions/connection-methods.md): quitar el cliente nativo para un público determinado
* [Transferencia de archivos](/es/pam/administration/sessions/file-transfer.md): SFTP por la misma cuenta y el mismo puerto
* [Inspección de comandos](/es/pam/administration/access/command-filtering.md): bloquear comandos dentro de la sesión
* [Grabación de sesión](/es/pam/administration/sessions/recording.md): lo que deja tras de sí una sesión SSH
* [Puertos y protocolos](/es/pam/reference/ports.md): el puerto usado para alcanzar cada plataforma
