Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah anda melaksanakan pemajuan port SSH mudah dalam Go?
Pemajuan port ialah teknik yang berguna untuk mewujudkan terowong antara dua hos, membolehkan trafik disampaikan dengan selamat melalui pelayan perantara. Dalam Go, penghantaran port boleh dicapai menggunakan pakej golang.org/x/crypto/ssh.
Persediaan port forward asas melibatkan:
Berikut ialah contoh kod Go mudah yang menunjukkan pemajuan port dari port tempatan (9000) ke port jauh ( 9999) pada pelayan jauh:
<code class="go">package main import ( "io" "log" "net" "golang.org/x/crypto/ssh" ) const ( localAddrString = "localhost:9000" remoteAddrString = "localhost:9999" serverAddrString = "192.168.1.100:22" username = "root" password = "password" ) func forward(localConn net.Conn, config *ssh.ClientConfig) { // Establish SSH connection to remote server sshClientConn, err := ssh.Dial("tcp", serverAddrString, config) if err != nil { log.Fatalf("ssh.Dial failed: %s", err) } defer sshClientConn.Close() // Establish connection to remote destination port sshConn, err := sshClientConn.Dial("tcp", remoteAddrString) if err != nil { log.Fatalf("sshClientConn.Dial failed: %s", err) } defer sshConn.Close() // Relay data between local and remote connections go func() { if _, err := io.Copy(sshConn, localConn); err != nil { log.Fatalf("io.Copy failed: %v", err) } }() go func() { if _, err := io.Copy(localConn, sshConn); err != nil { log.Fatalf("io.Copy failed: %v", err) } }() } func main() { // Configure SSH client config := &ssh.ClientConfig{ User: username, Auth: []ssh.AuthMethod{ ssh.Password(password), }, } // Create local listener localListener, err := net.Listen("tcp", localAddrString) if err != nil { log.Fatalf("net.Listen failed: %v", err) } // Accept incoming connections and forward them for { localConn, err := localListener.Accept() if err != nil { log.Fatalf("listener.Accept failed: %v", err) } go forward(localConn, config) } }</code>
Kod ini bermula dengan mencipta pendengar tempatan pada port 9000, kemudian mewujudkan sambungan klien ke pelayan SSH jauh. Seterusnya, sambungan SSH dimulakan ke port destinasi (9999) pada pelayan jauh. Akhir sekali, data disampaikan antara sambungan tempatan dan jauh melalui goroutine.
Atas ialah kandungan terperinci Bagaimanakah anda melaksanakan pemajuan port SSH mudah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!