Maison > Article > développement back-end > Comment implémenter une redirection de port SSH simple à l'aide de Golang ?
Redirection de port SSH simple à l'aide de Golang : démystifier la complexité
Créer des redirections de port SSH dans Go peut être une tâche simple, contrairement aux hypothèses initiales . Dans cet article, nous visons à démystifier le processus et à fournir une compréhension claire de la façon de réaliser la redirection de port dans Golang.
Comprendre le concept
Pour établir un port SSH en avant, nous devons créer une connexion entre un port local et un port distant. Les données du port local sont transférées via la connexion SSH vers le port distant. Cela permet un accès sécurisé aux services ou aux applications exécutés sur la machine distante via le port local.
Implémentation d'un redirecteur de port simple
Plongeons-nous dans les écrous et les boulons de redirection de port. Voici l'extrait de code clé qui atteint notre objectif :
<code class="go">package main import ( "io" "log" "net" "golang.org/x/crypto/ssh" ) var ( username = "root" password = "password" serverAddrString = "192.168.1.100:22" localAddrString = "localhost:9000" remoteAddrString = "localhost:9999" ) func main() { // Configure SSH connection config := &ssh.ClientConfig{ User: username, Auth: []ssh.AuthMethod{ ssh.Password(password), }, } // Listen for local port connections localListener, err := net.Listen("tcp", localAddrString) if err != nil { log.Fatalf("net.Listen failed: %v", err) } for { // Accept local port connections localConn, err := localListener.Accept() if err != nil { log.Fatalf("listen.Accept failed: %v", err) } // Create SSH connection and dial remote port sshClientConn, err := ssh.Dial("tcp", serverAddrString, config) if err != nil { log.Fatalf("ssh.Dial failed: %s", err) } // Establish remote port connection sshConn, err := sshClientConn.Dial("tcp", remoteAddrString) // Copy data between local and remote connections go func() { _, err = io.Copy(sshConn, localConn) if err != nil { log.Fatalf("io.Copy failed: %v", err) } }() go func() { _, err = io.Copy(localConn, sshConn) if err != nil { log.Fatalf("io.Copy failed: %v", err) } }() } }</code>
Comment ça marche
Clé Points
Cet exemple fournit une implémentation concise et facile à suivre d'une simple redirection de port SSH dans Golang. En comprenant chaque étape du processus, vous pouvez utiliser efficacement la redirection de port pour une communication réseau sécurisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!