Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich Remote-Befehle über SSH in Go CLI aus?

Wie führe ich Remote-Befehle über SSH in Go CLI aus?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 19:50:02787Durchsuche

How to Run Remote Commands via SSH in Go CLI?

Remotebefehle über SSH in Go CLI ausführen

Um Befehle auf einem Remotecomputer mithilfe einer Go-CLI auszuführen, sollten Sie diese verwenden das Paket „golang.org/x/crypto/ssh“.

Einfache Befehlsausführung

Hier ist eine Funktion, die eine einfache Verwendung der Ausführung eines einzelnen Befehls auf einem demonstriert Remote-Maschine und Rückgabe der Ausgabe:

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
}

Verwendung:

  output, err := remoteRun("root", "MY_IP", "PRIVATE_KEY", "ls")
  if err != nil {
      // handle error
  }

Multi-Hop-Ausführung

Für Bei der One-Hop-away-Ausführung können Sie einfach zunächst eine SSH-Verbindung zum Zwischencomputer herstellen, indem Sie die bereitgestellte Adresse und den privaten Schlüssel verwenden. Sobald die Verbindung hergestellt ist, verwenden Sie die remoteRun-Funktion innerhalb dieser Sitzung, um den Befehl auf dem internen Computer auszuführen.

Das obige ist der detaillierte Inhalt vonWie führe ich Remote-Befehle über SSH in Go CLI aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn