Heim > Artikel > Backend-Entwicklung > Wie führe ich Remote-Befehle über SSH in Go CLI aus?
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!