Maison > développement back-end > Golang > Comment se connecter en SSH aux serveurs Linux à l'aide de Keys in Go ?

Comment se connecter en SSH aux serveurs Linux à l'aide de Keys in Go ?

Susan Sarandon
Libérer: 2024-11-03 14:04:03
original
1027 Les gens l'ont consulté

How to SSH into Linux Servers Using Keys in Go?

SSH sur les serveurs Linux à l'aide de clés dans Go

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal