Heim > Backend-Entwicklung > Golang > Wie verbinde ich mich über SSH und einen PEM-Schlüssel in Go mit einem Server?

Wie verbinde ich mich über SSH und einen PEM-Schlüssel in Go mit einem Server?

Linda Hamilton
Freigeben: 2024-11-04 07:36:30
Original
815 Leute haben es durchsucht

How to Connect to a Server Using SSH and a PEM Key in Go?

Verbinden Sie sich mit einem Server über SSH und einen PEM/Schlüssel mit Go

Das sichere Herstellen einer Verbindung mit einem Remote-Server über SSH ist eine häufige Aufgabe in der Systemadministration und -automatisierung. Beim Umgang mit Linux-Servern wird die SSH-Schlüsselauthentifizierung aufgrund der erhöhten Sicherheit häufig der Passwortauthentifizierung vorgezogen. In diesem Artikel wird gezeigt, wie Sie mithilfe eines PEM-Schlüssels (Privacy Enhanced Mail) in Go eine SSH-Verbindung zu einem Remote-Server herstellen.

Das SSH-Paket in Go bietet Unterstützung für SSH-Verbindungen. Um eine Verbindung über einen PEM-Schlüssel herzustellen, müssen wir den Schlüssel zunächst in ein ssh.Signer-Objekt analysieren. Zu diesem Zweck können wir die Funktion ssh.ParsePrivateKey verwenden. Sobald wir einen ssh.Signer haben, können wir mit ssh.PublicKeys ein ssh.AuthMethod-Objekt erstellen. Diese ssh.AuthMethod wird zur Authentifizierung beim Server verwendet.

Sobald die ssh.AuthMethod bereit ist, können wir jetzt das ssh.ClientConfig-Objekt konfigurieren. In dieser Konfiguration geben wir den Benutzernamen, die Authentifizierungsmethode und andere notwendige Parameter an. Sobald die Konfiguration eingerichtet ist, verwenden wir die Funktion ssh.Dial, um die Verbindung herzustellen. Anschließend können wir mit ssh.NewSession eine neue Sitzung erstellen und Befehle auf dem Remote-Server ausführen.

Hier ist ein Beispiel-Codeausschnitt, der die Schritte beschreibt:

<code class="go">import (
    "io"
    "log"
    "net"
    "os"

    "golang.org/x/crypto/ssh"
)

func main() {
    pemBytes, err := os.ReadFile("my_key.pem")
    if err != nil {
        log.Fatal(err)
    }

    signer, err := ssh.ParsePrivateKey(pemBytes)
    if err != nil {
        log.Fatal(err)
    }

    auths := []ssh.AuthMethod{ssh.PublicKeys(signer)}
    cfg := &ssh.ClientConfig{
        User: "my_user",
        Auth: auths,
    }

    conn, err := ssh.Dial("tcp", "remote_host:22", cfg)
    if err != nil {
        log.Fatal(err)
    }
    defer conn.Close()

    session, err := conn.NewSession()
    if err != nil {
        log.Fatal(err)
    }
    defer session.Close()

    stdout, err := session.StdoutPipe()
    if err != nil {
        log.Fatal(err)
    }
    if err := session.Run("whoami"); err != nil {
        log.Fatal(err)
    }

    if _, err := io.ReadAll(stdout); err != nil {
        log.Fatal(err)
    }
}</code>
Nach dem Login kopieren

Indem Sie diese Schritte befolgen und verwenden Mit dem bereitgestellten Code-Snippet können Sie mithilfe eines PEM-Schlüssels in Ihren Go-Programmen eine sichere SSH-Verbindung zu einem Remote-Server herstellen.

Das obige ist der detaillierte Inhalt vonWie verbinde ich mich über SSH und einen PEM-Schlüssel in Go mit einem Server?. 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