Pemajuan Port SSH Mudah dalam Go
Dalam artikel ini, kami akan menyelidiki tentang mencipta dan menutup port TCP asas ke hadapan melalui SSH menggunakan Pergi, khusus untuk pendatang baharu Go dan bahasa yang ditaip secara statik. Kami akan menyediakan penyelesaian yang jelas dan ringkas dengan membahagikan proses kepada langkah-langkah yang boleh difahami.
Latar Belakang dan Matlamat
Kami berhasrat untuk meniru kefungsian perintah terminal seperti "ssh -L 9000:localhost:9999 nama pengguna@pelayan" secara pemrograman menggunakan Go. Perintah ini menetapkan port ke hadapan dari port tempatan 9000 ke port jauh 9999 pada pelayan yang ditentukan.
Garis Penyelesaian
Untuk mencapai ini, kami akan mencipta pendengar tempatan pada port 9000 dan sediakan sambungan klien SSH dengan pelayan jauh. Apabila port tempatan menerima permintaan, kami akan mewujudkan sambungan ke port jauh dan memajukan data ke sana ke mari.
Pecahan Kod
<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 forward(localConn net.Conn, config *ssh.ClientConfig) { sshClientConn, err := ssh.Dial("tcp", serverAddrString, config) if err != nil { log.Fatalf("ssh.Dial failed: %s", err) } sshConn, err := sshClientConn.Dial("tcp", remoteAddrString) go func() { _, err = io.Copy(sshConn, localConn) }() go func() { _, err = io.Copy(localConn, sshConn) }() } func main() { config := &ssh.ClientConfig{ User: username, Auth: []ssh.AuthMethod{ ssh.Password(password), }, } localListener, err := net.Listen("tcp", localAddrString) if err != nil { log.Fatalf("net.Listen failed: %v", err) } for { localConn, err := localListener.Accept() if err != nil { log.Fatalf("listen.Accept failed: %v", err) } go forward(localConn, config) } }</code>
Penjelasan
Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan pemajuan port SSH dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!