Wie kann ich mithilfe von Schlüsseln in Go eine SSH-Verbindung zu Linux-Servern herstellen?

Susan Sarandon
Freigeben: 2024-11-03 14:04:03
Original
999 Leute haben es durchsucht

How to SSH into Linux Servers Using Keys in Go?

SSH in Linux-Server mithilfe von Schlüsseln in Go

Das Herstellen einer Verbindung zu einem Server mithilfe von SSH und einem Schlüssel in Golang kann über das SSH-Paket erreicht werden. So können Sie es machen:

Die Dial-Funktion erfordert eine ssh.AuthMethod-Instanz, die mit ssh.PublicKeys aus SSH-Schlüsseln erstellt werden kann. Um einen Unterzeichner aus den PEM-Bytes zu erhalten, verwenden Sie ssh.ParsePrivateKey.

Um das Unterzeichnerfeld eines privaten Schlüssels zu verwenden, können Sie ssh.PublicKeys(signers...) als Authentifizierungsmethode verwenden.

Beispielcode:

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

    "github.com/gliderlabs/ssh"
)

func main() {
    sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK"))
    if err != nil {
        log.Fatal(err)
    }

    agent := agent.NewClient(sock)

    signers, err := agent.Signers()
    if err != nil {
        log.Fatal(err)
    }

    auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)}

    cfg := &ssh.ClientConfig{
        User: "username",
        Auth: auths,
    }
    cfg.SetDefaults()

    client, err := ssh.Dial("tcp", "aws-hostname:22", cfg)
    if err != nil {
        log.Fatal(err)
    }

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

    log.Println("we have a session!")
}</code>
Nach dem Login kopieren

Dieser Code ahmt den Befehl ssh -i x.pem user@host nach und richtet mithilfe des bereitgestellten Schlüssels eine SSH-Sitzung mit dem angegebenen Server ein. Sie können jetzt Befehle innerhalb des Servers über die Sitzungsvariable ausführen.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Schlüsseln in Go eine SSH-Verbindung zu Linux-Servern herstellen?. 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