---
name: ssh_config_parse
kind: function
lang: go
domain: infra
version: "1.0.0"
purity: pure
signature: "func SSHConfigParse(content string) []SSHConfigEntry"
description: "Parsea el contenido de un archivo ~/.ssh/config y retorna una lista de SSHConfigEntry."
tags: [ssh, config, parser, remote]
uses_functions: []
uses_types: [ssh_config_entry_go_infra]
returns: []
returns_optional: false
error_type: ""
imports: [bufio, strconv, strings]
params:
  - name: content
    desc: "texto completo del archivo ~/.ssh/config"
output: "lista de SSHConfigEntry, uno por cada bloque Host (sin wildcards)"
tested: true
tests: ["parsea config con multiples hosts", "ignora comentarios y lineas vacias", "ignora hosts con wildcards", "parsea opciones extra en Options map"]
test_file_path: "functions/infra/ssh_config_parse_test.go"
file_path: "functions/infra/ssh_config_parse.go"
---

## Ejemplo

```go
content := `Host myserver
    HostName 192.168.1.100
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519`

entries := SSHConfigParse(content)
// entries[0].Alias == "myserver"
// entries[0].HostName == "192.168.1.100"
```

## Notas

Ignora bloques `Host *` y `Host 192.168.?.*` (wildcards). Soporta directivas con separador espacio o `=`. Las directivas no reconocidas se almacenan en el map `Options`.
