使用 x/crypto/ssh 通过 Go 中的堡垒节点建立与私有实例的 SSH 连接
在这种情况下,您的目标是连接通过部署在包含公共和私有的 AWS VPC 内的堡垒节点从本地笔记本电脑到私有实例(称为“服务实例”)子网。您打算在服务实例上执行命令并从本地笔记本电脑传输文件。
要使用 Go 的“x/crypto/ssh”库实现此目的:
建立与堡垒主机的连接:
从 Bastion 建立到服务实例的连接:
为服务实例创建新的 SSH 客户端:
执行命令并传输文件:
下面是演示这些步骤的代码片段:
// connect to the bastion host bClient, err := ssh.Dial("tcp", bastionAddr, config) if err != nil { log.Fatal(err) } // Dial a connection to the service host, from the bastion conn, err := bClient.Dial("tcp", serviceAddr) if err != nil { log.Fatal(err) } ncc, chans, reqs, err := ssh.NewClientConn(conn, serviceAddr, config) if err != nil { log.Fatal(err) } sClient := ssh.NewClient(ncc, chans, reqs)
使用 sClient,您可以执行命令并与服务实例传输文件。
以上是如何使用 x/crypto/ssh 通过 Go 中的堡垒主机 SSH 到私有实例?的详细内容。更多信息请关注PHP中文网其他相关文章!