Maison > développement back-end > Golang > Comment se connecter en SSH à une instance privée via un hôte Bastion dans Go en utilisant x/crypto/ssh ?

Comment se connecter en SSH à une instance privée via un hôte Bastion dans Go en utilisant x/crypto/ssh ?

Patricia Arquette
Libérer: 2024-12-06 16:42:22
original
303 Les gens l'ont consulté

How to SSH into a Private Instance via a Bastion Host in Go using x/crypto/ssh?

Établissement d'une connexion SSH à une instance privée sur un nœud Bastion dans Go à l'aide de x/crypto/ssh

Dans ce scénario, vous souhaitez vous connecter à une instance privée (appelée « instance de service ») depuis votre ordinateur portable local via un nœud bastion déployé dans AWS VPC contenant des sous-réseaux publics et privés. Vous avez l'intention d'exécuter des commandes sur l'instance de service et de transférer des fichiers depuis votre ordinateur portable local.

Pour y parvenir en utilisant la bibliothèque "x/crypto/ssh" de Go :

  1. Établir une connexion à l'hôte Bastion :

    • Créez un ssh.Client représentant la connexion à l'hôte bastion.
  2. Établir une connexion à l'instance de service à partir de Bastion :

    • Utiliser la méthode Dial du client bastion pour établir un réseau virtuel.Conn entre vous et le service instance.
  3. Créer un nouveau client SSH pour l'instance de service :

    • Convertir le net.Conn en un ssh.Conn en utilisant ssh.NewClientConn.
    • Créez un nouveau ssh.Client (sClient) pour la communication avec l'instance de service.
  4. Exécuter des commandes et transférer des fichiers :

    • Utilisez le sClient pour exécuter des commandes sur l'instance de service.
    • Implémenter des mécanismes de transfert de fichiers (par exemple, SFTP) pour télécharger fichiers de votre ordinateur portable local vers l'instance de service.

Vous trouverez ci-dessous un extrait de code illustrant ces étapes :

// connect to the bastion host
bClient, err := ssh.Dial("tcp", bastionAddr, config)
if err != nil {
    log.Fatal(err)
}

// Dial a connection to the service host, from the bastion
conn, err := bClient.Dial("tcp", serviceAddr)
if err != nil {
    log.Fatal(err)
}

ncc, chans, reqs, err := ssh.NewClientConn(conn, serviceAddr, config)
if err != nil {
    log.Fatal(err)
}

sClient := ssh.NewClient(ncc, chans, reqs)
Copier après la connexion

Avec sClient, vous pouvez exécuter des commandes et transférer des fichiers vers et depuis l'instance de service.

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