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>
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!