Maison  >  Article  >  développement back-end  >  Comment se connecter à un serveur en utilisant SSH et une clé PEM dans Go ?

Comment se connecter à un serveur en utilisant SSH et une clé PEM dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 07:36:30743parcourir

How to Connect to a Server Using SSH and a PEM Key in Go?

Connectez-vous à un serveur à l'aide de SSH et d'un PEM/clé avec Go

La connexion sécurisée à un serveur distant à l'aide de SSH est une tâche courante dans l'administration et l'automatisation du système. Lorsqu'il s'agit de serveurs Linux, l'authentification par clé SSH est souvent préférée à l'authentification par mot de passe pour sa sécurité accrue. Cet article montre comment établir une connexion SSH à un serveur distant à l'aide d'une clé PEM (Privacy Enhanced Mail) dans Go.

Le package ssh dans Go prend en charge les connexions SSH. Pour nous connecter à l'aide d'une clé PEM, nous devons d'abord analyser la clé dans un objet ssh.Signer. Nous pouvons utiliser la fonction ssh.ParsePrivateKey à cet effet. Une fois que nous avons un ssh.Signer, nous pouvons créer un objet ssh.AuthMethod en utilisant ssh.PublicKeys. Ce ssh.AuthMethod sera utilisé pour s'authentifier auprès du serveur.

Avec le ssh.AuthMethod prêt, nous pouvons maintenant configurer l'objet ssh.ClientConfig. Nous spécifions le nom d'utilisateur, la méthode d'authentification et d'autres paramètres nécessaires dans cette configuration. Une fois la configuration configurée, nous utilisons la fonction ssh.Dial pour établir la connexion. Nous pouvons ensuite créer une nouvelle session à l'aide de ssh.NewSession et exécuter des commandes sur le serveur distant.

Voici un exemple d'extrait de code qui décrit les étapes :

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

    "golang.org/x/crypto/ssh"
)

func main() {
    pemBytes, err := os.ReadFile("my_key.pem")
    if err != nil {
        log.Fatal(err)
    }

    signer, err := ssh.ParsePrivateKey(pemBytes)
    if err != nil {
        log.Fatal(err)
    }

    auths := []ssh.AuthMethod{ssh.PublicKeys(signer)}
    cfg := &ssh.ClientConfig{
        User: "my_user",
        Auth: auths,
    }

    conn, err := ssh.Dial("tcp", "remote_host:22", cfg)
    if err != nil {
        log.Fatal(err)
    }
    defer conn.Close()

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

    stdout, err := session.StdoutPipe()
    if err != nil {
        log.Fatal(err)
    }
    if err := session.Run("whoami"); err != nil {
        log.Fatal(err)
    }

    if _, err := io.ReadAll(stdout); err != nil {
        log.Fatal(err)
    }
}</code>

En suivant ces étapes et en utilisant L'extrait de code fourni, vous pouvez établir une connexion SSH sécurisée à un serveur distant à l'aide d'une clé PEM dans vos programmes Go.

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!

Déclaration:
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