ホームページ  >  記事  >  バックエンド開発  >  Go CLI で SSH 経由でリモート コマンドを実行するにはどうすればよいですか?

Go CLI で SSH 経由でリモート コマンドを実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 19:50:02728ブラウズ

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
  }

マルチホップ実行

の場合ワンホップアウェイの実行では、最初に提供された addr と privateKey を使用して中間マシンへの SSH 接続を簡単に確立できます。接続したら、そのセッション内でremoteRun関数を使用して、内部マシンでコマンドを実行します。

以上がGo CLI で SSH 経由でリモート コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。