在 Go CLI 中通过 SSH 运行远程命令
要使用 Go CLI 在远程计算机上执行命令,您需要使用“golang.org/x/crypto/ssh”包。
简单命令执行
这是一个函数,演示了在远程机器并返回输出:
import ( "bytes" "golang.org/x/crypto/ssh" "io" "net" ) func remoteRun(user string, addr string, privateKey string, cmd string) (string, error) { key, err := ssh.ParsePrivateKey([]byte(privateKey)) if err != nil { return "", err } config := &ssh.ClientConfig{ User: user, HostKeyCallback: ssh.InsecureIgnoreHostKey(), Auth: []ssh.AuthMethod{ ssh.PublicKeys(key), }, } client, err := ssh.Dial("tcp", net.JoinHostPort(addr, "22"), config) if err != nil { return "", err } session, err := client.NewSession() if err != nil { return "", err } defer session.Close() var b bytes.Buffer session.Stdout = &b err = session.Run(cmd) return b.String(), err }
用法:
output, err := remoteRun("root", "MY_IP", "PRIVATE_KEY", "ls") if err != nil { // handle error }
多跳执行
For一跳离开执行,您可以首先使用提供的 addr 和 privateKey 简单地建立与中间机器的 SSH 连接。连接后,使用该会话中的 RemoteRun 函数在内部计算机上执行命令。
以上是如何在 Go CLI 中通过 SSH 运行远程命令?的详细内容。更多信息请关注PHP中文网其他相关文章!