Heim > Artikel > Backend-Entwicklung > Wie erstellt man in Golang eine einfache SSH-Portweiterleitung?
Einfache SSH-Portweiterleitung in Golang
In diesem Artikel erfahren Sie, wie Sie eine einfache SSH-Portweiterleitung erstellen, damit Sie eine Verbindung herstellen können an einen Remote-Port von Ihrem lokalen Computer.
Erstellen einer Portweiterleitung
Um eine Portweiterleitung zu erstellen, müssen Sie eine SSH-Verbindung herstellen und den lokalen Port abhören . Sobald eine Verbindung hergestellt ist, können Sie Daten zwischen den lokalen und Remote-Ports weiterleiten.
Hier ist eine Schritt-für-Schritt-Anleitung:
Beispielcode
Der folgende Go-Code demonstriert diese Schritte:
<code class="go">package main import ( "io" "log" "net" "golang.org/x/crypto/ssh" ) func forward(localConn net.Conn, config *ssh.ClientConfig, remoteAddr string) { sshClientConn, err := ssh.Dial("tcp", "remote.example.com:22", config) if err != nil { log.Fatalf("ssh.Dial failed: %s", err) } sshConn, err := sshClientConn.Dial("tcp", remoteAddr) if err != nil { log.Fatalf("sshClientConn.Dial failed: %s", err) } go io.Copy(sshConn, localConn) go io.Copy(localConn, sshConn) } func main() { config := &ssh.ClientConfig{ User: "username", Auth: []ssh.AuthMethod{ ssh.Password("password"), }, } listener, err := net.Listen("tcp", "local.example.com:9000") if err != nil { log.Fatalf("net.Listen failed: %s", err) } for { localConn, err := listener.Accept() if err != nil { log.Fatalf("listener.Accept failed: %s", err) } go forward(localConn, config, "remote.example.com:9999") } }</code>
Indem Sie diese Schritte befolgen und den bereitgestellten Code verwenden, können Sie eine einfache, aber effektive SSH-Portweiterleitung erstellen und Greifen Sie ganz einfach von Ihrem lokalen Computer aus auf Remote-Dienste zu.
Das obige ist der detaillierte Inhalt vonWie erstellt man in Golang eine einfache SSH-Portweiterleitung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!