Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
swift-nio-ssh — SwiftNIO SSH è un'implementazione programmatica di SSH che utilizza SwiftNIO | Kitploit
Strumenti/GitHubGitHub/apple/swift-nio-ssh
Strumenti di Crittografia/DecrittografiaSicurezza di ReteUtilità e FrameworkAutenticazioneStrumento di Accesso Remoto
GitHubapple/swift-nio-ssh

swift-nio-ssh

SwiftNIO SSH è un'implementazione programmatica di SSH che utilizza SwiftNIO

Vedi Repository
513792115 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

SwiftNIO SSH

Questo progetto contiene il supporto SSH utilizzando SwiftNIO.

Cos'è SwiftNIO SSH?

SwiftNIO SSH è un'implementazione programmatica di SSH: una raccolta di API che permettono ai programmatori di implementare endpoint che parlano SSH. Ciò significa che è più simile a libssh2 che a openssh. SwiftNIO SSH non fornisce client e server SSH pronti per la produzione, ma offre invece i mattoni per costruire questo tipo di client e server.

Ci sono diverse ragioni per fornire un'implementazione programmatica di SSH. Una è che SSH ha una relazione unica con l'interattività dell'utente. Gli utenti tecnici sono abituati a interagire con SSH in modo interattivo, sia per eseguire comandi su macchine remote sia per avviare shell interattive. Avere la possibilità di rispondere a queste richieste in modo programmatico permette modalità di interazione alternative interessanti. Come esempi precedenti, possiamo citare Twisted's Manhole, che utilizza un'implementazione programmatica di SSH chiamata conch per fornire un interprete Python interattivo all'interno di un server Python in esecuzione, o ssh-chat, un server SSH che fornisce una chat room invece della normale funzionalità di shell. Si possono immaginare anche usi innovativi per il forwarding TCP.

Un'altra buona ragione per fornire SSH programmatico è che non è raro che i servizi debbano interagire con altri servizi eseguendo comandi. Mentre Process risolve questo problema per il caso locale, a volte i comandi da invocare sono remoti. Sebbene Process possa avviare un client ssh come sottoprocesso per eseguire questa invocazione, può essere molto più semplice invocare SSH direttamente. Questo è il caso d'uso principale di libssh2. SwiftNIO SSH fornisce l'equivalente del livello di rete e crittografico di libssh2, permettendo agli utenti motivati di gestire sessioni SSH direttamente da servizi Swift.

Le versioni più recenti di SwiftNIO SSH supportano Swift 5.9 e successive. La versione minima di Swift supportata dalle release di SwiftNIO SSH è dettagliata di seguito:

SwiftNIO SSHVersione minima di 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

Cosa supporta SwiftNIO SSH?

SwiftNIO SSH supporta SSHv2 con le seguenti funzionalità:

  • Tutte le funzionalità dei canali di sessione, incluse le richieste di shell ed exec
  • Forwarding TCP diretto e inverso
  • Solo primitive crittografiche moderne: Ed25519 e ECDSA sulle principali curve NIST (P256, P384, P521) per la crittografia asimmetrica, AES-GCM per la crittografia simmetrica, x25519 per lo scambio di chiavi
  • Autenticazione utente tramite password e chiave pubblica
  • Supporta tutte le piattaforme supportate da SwiftNIO e Swift Crypto

Come si usa SwiftNIO SSH?

SwiftNIO SSH fornisce un ChannelHandler di SwiftNIO, NIOSSHHandler. Questo handler implementa la maggior parte del protocollo SSH direttamente. Gli utenti non devono generare messaggi SSH direttamente: interagiscono invece con NIOSSHHandler tramite canali figli e delegati.

SSH è un protocollo multiplexato: ogni connessione SSH è suddivisa in più canali di comunicazione bidirezionale chiamati, appunto, canali. SwiftNIO SSH riflette questa struttura utilizzando un'astrazione di "canale figlio". Quando un peer crea un nuovo canale SSH, SwiftNIO SSH creerà un nuovo Channel NIO utilizzato per rappresentare tutto il traffico su quel canale SSH. All'interno di questo Channel figlio, tutti gli eventi sono strettamente ordinati tra loro; tuttavia, gli eventi di diversi Channel possono essere interallacciati liberamente dall'implementazione.

Una connessione SSH attiva si presenta quindi come segue:

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

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

Un canale SSH viene invocato con un tipo di canale. NIOSSH ne supporta tre: session, directTCPIP e forwardedTCPIP. Il tipo di canale più comune è session: session viene utilizzato per rappresentare l'invocazione di un programma, sia esso un programma specifico o una shell. Gli altri due tipi di canale sono relativi al forwarding delle porte TCP e verranno discussi in seguito.

Scarica lo strumento