Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
swift-nio-ssh — SwiftNIO SSH es una implementación programática de SSH utilizando SwiftNIO | Kitploit
Herramientas/GitHubGitHub/apple/swift-nio-ssh
Herramientas de Cifrado/DescifradoSeguridad de RedesUtilidades y FrameworksAutenticaciónHerramienta de Acceso Remoto
GitHubapple/swift-nio-ssh

swift-nio-ssh

SwiftNIO SSH es una implementación programática de SSH utilizando SwiftNIO

Ver Repositorio
5137921hace 15 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

SwiftNIO SSH

Este proyecto contiene soporte SSH utilizando SwiftNIO.

¿Qué es SwiftNIO SSH?

SwiftNIO SSH es una implementación programática de SSH: es decir, es una colección de APIs que permiten a los programadores implementar extremos que hablan SSH. Críticamente, esto significa que se parece más a libssh2 que a openssh. SwiftNIO SSH no incluye clientes y servidores SSH listos para producción, sino que proporciona los componentes básicos para construir este tipo de cliente y servidor.

Hay varias razones para proporcionar una implementación programática de SSH. Una es que SSH tiene una relación única con la interactividad del usuario. Los usuarios técnicos están muy acostumbrados a interactuar con SSH de forma interactiva, ya sea para ejecutar comandos en máquinas remotas o para ejecutar shells interactivos. Tener la capacidad de responder programáticamente a estas solicitudes permite modos alternativos de interacción interesantes. Como ejemplos anteriores, podemos señalar el Manhole de Twisted, que utiliza una implementación programática de SSH llamada conch para proporcionar un intérprete interactivo de Python dentro de un servidor Python en ejecución, o ssh-chat, un servidor SSH que proporciona una sala de chat en lugar de la funcionalidad normal de shell SSH. También se pueden imaginar usos innovadores para el reenvío TCP.

Otra buena razón para proporcionar SSH programático es que no es raro que los servicios necesiten interactuar con otros servicios de una manera que implique ejecutar comandos. Mientras que Process resuelve esto para el caso local, a veces los comandos que deben invocarse son remotos. Si bien Process podría lanzar un cliente ssh como subproceso para ejecutar esta invocación, puede ser sustancialmente más directo simplemente invocar SSH directamente. Este es el caso de uso objetivo de libssh2. SwiftNIO SSH proporciona el equivalente de la capa de red y criptográfica de libssh2, permitiendo a los usuarios motivados manejar sesiones SSH directamente desde servicios Swift.

Las versiones más recientes de SwiftNIO SSH admiten Swift 5.9 y posteriores. Las versiones mínimas de Swift compatibles con las versiones de SwiftNIO SSH se detallan a continuación:

SwiftNIO SSHVersión mínima de Swift
0.0.0 ..< 0.3.05.1
0.3.0 ..< 0.4.05.2
0.4.0 ..< 0.5.05.4
0.5.0 ..< 0.6.25.5.2
0.6.2 ..< 0.9.05.6
0.9.0 ..< 0.9.25.8
0.9.2 ..< 0.10.05.9
0.10.0 ... 0.12.05.10
0.12.0 ..< 0.13.06.0
0.13.0 ..<6.1

¿Qué soporta SwiftNIO SSH?

SwiftNIO SSH soporta SSHv2 con el siguiente conjunto de características:

  • Todas las características de los canales de sesión, incluyendo solicitudes de canales shell y exec
  • Reenvío de puertos TCP directo e inverso
  • Solo primitivas criptográficas modernas: Ed25519 y ECDSA sobre las principales curvas NIST (P256, P384, P521) para criptografía asimétrica, AES-GCM para criptografía simétrica, x25519 para intercambio de claves
  • Autenticación de usuario mediante contraseña y clave pública
  • Soporta todas las plataformas compatibles con SwiftNIO y Swift Crypto

¿Cómo uso SwiftNIO SSH?

SwiftNIO SSH proporciona un ChannelHandler de SwiftNIO, NIOSSHHandler. Este manejador implementa la mayor parte del protocolo SSH directamente. No se espera que los usuarios generen mensajes SSH directamente: en su lugar, interactúan con el NIOSSHHandler a través de canales hijos y delegados.

SSH es un protocolo multiplexado: cada conexión SSH se subdivide en múltiples canales de comunicación bidireccionales llamados, adecuadamente, canales. SwiftNIO SSH refleja esta construcción utilizando una abstracción de "canal hijo". Cuando un par crea un nuevo canal SSH, SwiftNIO SSH creará un nuevo Channel de NIO que se utiliza para representar todo el tráfico en ese canal SSH. Dentro de este Channel hijo, todos los eventos están estrictamente ordenados entre sí: sin embargo, los eventos en diferentes Channels pueden intercalarse libremente por la implementación.

Una conexión SSH activa, por lo tanto, se ve así:

┌ ─ NIO Channel ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐

│     ┌────────────────────────────────┐    │
      │                                │
│     │                                │    │
      │                                │
│     │                                │    │
      │         NIOSSHHandler          │───────────────────────┐
│     │                                │    │                  │
      │                                │                       │
│     │                                │    │                  │
      │                                │                       │
│     └────────────────────────────────┘    │                  │
                                                               │
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘                  │
                                                               │
                                                               │
                                                               │
                                                               ▼
                     ┌── SSH Child Channel ─────────────────────────────────────────────────────────────┐
                     │                                                                                  │
                     │   ┌────────────────────────────────┐      ┌────────────────────────────────┐     ├───┐
                     │   │                                │      │                                │     │   │
                     │   │                                │      │                                │     │   ├───┐
                     │   │                                │      │                                │     │   │   │
                     │   │                                │      │                                │     │   │   │
                     │   │          User Handler          │      │          User Handler          │     │   │   │
                     │   │                                │      │                                │     │   │   │
                     │   │                                │      │                                │     │   │   │
                     │   │                                │      │                                │     │   │   │
                     │   │                                │      │                                │     │   │   │
                     │   └────────────────────────────────┘      └────────────────────────────────┘     │   │   │
                     │                                                                                  │   │   │
                     └───┬──────────────────────────────────────────────────────────────────────────────┘   │   │
                         │                                                                                  │   │
                         └───┬──────────────────────────────────────────────────────────────────────────────┘   │
                             │                                                                                  │
                             └──────────────────────────────────────────────────────────────────────────────────┘

Un canal SSH se invoca con un tipo de canal. NIOSSH soporta tres: session, directTCPIP y forwardedTCPIP. El tipo de canal más común es session: session se utiliza para representar la invocación de un programa, ya sea un programa específico con nombre o un shell. Los otros dos tipos de canal están relacionados con el reenvío de puertos TCP, y se discutirán más adelante.

Descargar herramienta