首頁 > 後端開發 > Golang > 如何在 Go CLI 中透過 SSH 運行遠端命令?

如何在 Go CLI 中透過 SSH 運行遠端命令?

Susan Sarandon
發布: 2024-11-07 19:50:02
原創
825 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板