Home > Article > Backend Development > How do you create a simple SSH port forward in Golang?
Simple SSH Port Forward in Golang
In this article, we will explore how to create a simple SSH port forward, allowing you to connect to a remote port from your local machine.
Creating a Port Forward
To create a port forward, you need to establish an SSH connection and listen on the local port. Once a connection is made, you can forward data between the local and remote ports.
Here's a step-by-step guide:
Example Code
The following Go code demonstrates these steps:
<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>
By following these steps and using the provided code, you can create a simple yet effective SSH port forward and access remote services from your local machine with ease.
The above is the detailed content of How do you create a simple SSH port forward in Golang?. For more information, please follow other related articles on the PHP Chinese website!