> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/ejpt-cheatsheet/enumeracion-ssh-22.md).

# Enumeración SSH (22)

## 🛠️ 1. Detección y versión del servicio SSH

#### 📌 Manualmente:

Puedes usar `nmap` para identificar el servicio y su versión:

```bash
nmap -sV -p 22 <IP>
```

O conectar directamente para ver el banner:

```bash
nc <IP> 22
```

También puedes usar `telnet`:

```bash
telnet <IP> 22
```

#### 📌 Metasploit:

```bash
use auxiliary/scanner/ssh/ssh_version
set RHOSTS <IP>
run
```

***

## 🔍 2. Enumeración de usuarios

Algunas implementaciones de SSH permiten la detección de usuarios válidos mediante el análisis de los tiempos de respuesta al intentar iniciar sesión.

#### 📌 Manualmente:

Puedes probar herramientas como [`usernametool`](https://github.com/0xInfection/UserName-Enumeration) o realizar un análisis de timing con scripts personalizados. Esta técnica no siempre funciona y depende de la configuración del servidor SSH.

#### 📌 Metasploit:

```bash
use auxiliary/scanner/ssh/ssh_enumusers
set RHOSTS <IP>
set USER_FILE /path/to/userlist.txt
run
```

***

## 🧨 3. Fuerza bruta de contraseñas

Una vez identificados usuarios válidos, puedes intentar acceder mediante fuerza bruta si está permitido por el servidor.

#### 📌 Manualmente:

```bash
hydra -L users.txt -P pass.txt ssh://<IP>
```

#### 📌 Metasploit:

```bash
use auxiliary/scanner/ssh/ssh_login
set RHOSTS <IP>
set USERNAME <usuario>           # o USER_FILE
set PASSWORD <contraseña>        # o PASS_FILE
set STOP_ON_SUCCESS true
run
```

***

## ✅ 4. Conexión SSH (si se obtienen credenciales)

Si consigues usuario y contraseña válidos, puedes iniciar sesión con:

```bash
ssh <usuario>@<IP>
```
