Golang での単純な SSH ポート フォワード
この記事では、簡単な SSH ポート フォワードを作成して、接続できるようにする方法を説明します。
ポート フォワードの作成
ポート フォワードを作成するには、SSH 接続を確立し、ローカル ポートでリッスンする必要があります。 。接続が確立されると、ローカル ポートとリモート ポートの間でデータを転送できます。
ステップバイステップのガイドは次のとおりです:
コード例
次の Go コードは、これらの手順を示しています。
<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>
これらの手順に従い、提供されたコードを使用することで、シンプルでありながら効果的な SSH ポート転送と、ローカル マシンからリモート サービスに簡単にアクセスできます。
以上がGolang で単純な SSH ポート転送を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。