Maison > développement back-end > Golang > 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
Libérer: 2024-11-04 07:36:30
original
814 Les gens l'ont consulté

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

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!

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