如何在 Go 中實現 SSH 連接埠轉送?
Nov 05, 2024 am 02:12 AMGo 中的簡單SSH 連接埠轉送
在本文中,我們將深入研究使用SSH 建立和關閉基本TCP 連接埠轉送Go,專門針對Go 和靜態型別語言的新手。我們將透過將流程分解為可理解的步驟來提供清晰簡潔的解決方案。
背景和目標
我們的目標是複製終端命令的功能,例如使用Go 以程式設計方式“ssh -L 9000:localhost:9999 username@server” 。此命令在指定伺服器上建立從本機連接埠 9000 到遠端連接埠 9999 的連接埠轉送。
解決方案概要
為了實現此目的,我們將建立一個本地偵聽連接埠 9000 並與遠端伺服器建立 SSH 用戶端連線。當本機連接埠收到請求時,我們將與遠端連接埠建立連線並來回轉送資料。
程式碼分解
<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>
登入後複製
說明
- 我們在連接埠上建立一個本機連接埠監聽器。
- 當連線到本機連接埠時,我們會建立一個 SSH 用戶端連線伺服器 (sshClientConn)。
- 然後我們連接到伺服器 (sshConn) 上的遠端連接埠。
- 單獨的 goroutine 用於將資料從本地連接複製到 SSH 連接,反之亦然.
- 這允許資料在本地和遠端連接埠之間轉送。
以上是如何在 Go 中實現 SSH 連接埠轉送?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)