La connexion à un serveur à l'aide de SSH et d'une clé dans Golang peut être réalisée via le package ssh. Voici comment procéder :
La fonction Dial nécessite une instance ssh.AuthMethod, qui peut être créée à partir de clés SSH à l'aide de ssh.PublicKeys. Pour obtenir un signataire à partir des octets PEM, utilisez ssh.ParsePrivateKey.
Pour utiliser le champ Signataires d'une clé privée, vous pouvez utiliser ssh.PublicKeys(signers...) comme méthode d'authentification.
Exemple de code :
<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>
Ce code imite la commande ssh -i x.pem user@host, établissant une session SSH avec le serveur spécifié à l'aide de la clé fournie. Vous pouvez désormais exécuter des commandes au sein du serveur via la variable de session.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!