Herstellen einer SSH-Verbindung zu einer privaten Instanz über einen Bastion-Knoten in Go unter Verwendung von x/crypto/ssh
In diesem Szenario möchten Sie eine Verbindung herstellen zu einer privaten Instanz (als „Dienstinstanz“ bezeichnet) von Ihrem lokalen Laptop über einen Bastionsknoten, der innerhalb der AWS VPC bereitgestellt wird und öffentliche und private Subnetze enthält. Sie beabsichtigen, Befehle auf der Dienstinstanz auszuführen und Dateien von Ihrem lokalen Laptop zu übertragen.
Um dies mit der „x/crypto/ssh“-Bibliothek von Go zu erreichen:
Verbindung zum Bastion Host herstellen:
Verbindung zur Dienstinstanz von Bastion herstellen:
Neuen SSH-Client für Serviceinstanz erstellen:
Befehle ausführen und Dateien übertragen:
Unten finden Sie einen Codeausschnitt, der diese Schritte demonstriert:
// connect to the bastion host bClient, err := ssh.Dial("tcp", bastionAddr, config) if err != nil { log.Fatal(err) } // Dial a connection to the service host, from the bastion conn, err := bClient.Dial("tcp", serviceAddr) if err != nil { log.Fatal(err) } ncc, chans, reqs, err := ssh.NewClientConn(conn, serviceAddr, config) if err != nil { log.Fatal(err) } sClient := ssh.NewClient(ncc, chans, reqs)
Mit sClient können Sie Befehle ausführen und Dateien hin und her übertragen die Dienstinstanz.
Das obige ist der detaillierte Inhalt vonWie kann ich mit x/crypto/ssh eine SSH-Verbindung zu einer privaten Instanz über einen Bastion Host in Go herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!