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

Susan Sarandon
Freigeben: 2024-11-07 19:50:02
Original
786 Leute haben es durchsucht

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
}
Nach dem Login kopieren

Verwendung:

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

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage