首页 > 后端开发 > Golang > 如何在 Go CLI 中通过 SSH 运行远程命令?

如何在 Go CLI 中通过 SSH 运行远程命令?

Susan Sarandon
发布: 2024-11-07 19:50:02
原创
823 人浏览过

How to Run Remote Commands via SSH in Go CLI?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板