Connectez-vous à un serveur distant à l'aide de SSH avec une clé privée dans Golang
L'utilisation du package SSH dans Go permet des connexions pratiques aux serveurs distants via Protocoles SSH. Cependant, l'établissement de connexions avec des clés privées nécessite une compréhension plus approfondie des fonctionnalités du package.
Le package SSH prend en charge diverses méthodes d'authentification, y compris l'authentification par mot de passe. La fonction Dial, comme mentionné dans la documentation du package, permet aux utilisateurs de spécifier la méthode d'authentification à utiliser pour établir la connexion. Pour exploiter une clé privée pour l'authentification, nous devons utiliser des méthodes supplémentaires fournies par le package.
La fonction PublicKeys joue un rôle crucial dans ce scénario. Il aide à convertir une collection de signataires SSH en un mécanisme d'authentification. Ces signataires peuvent être obtenus à l'aide de diverses méthodes, notamment en les analysant à partir de représentations d'octets PEM. La possibilité d'utiliser directement les clés privées RSA, DSA ou ECDSA est également prise en charge grâce à l'utilisation de la fonction NewSignerFromKey.
Prenons un exemple qui démontre la mise en œuvre pratique de ces concepts. Cet exemple intègre la prise en charge de l'authentification basée sur un agent, qui suit généralement l'utilisation de l'authentification par clé privée.
<code class="go">import ( "log" "net" "os" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" ) func main() { // Establishes a connection to the SSH Agent sock, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK")) if err != nil { log.Fatal(err) } agent := agent.NewClient(sock) // Acquires signers from the SSH Agent signers, err := agent.Signers() if err != nil { log.Fatal(err) } // Creates a list of authentication methods using the signers obtained auths := []ssh.AuthMethod{ssh.PublicKeys(signers...)} // Configures the client using the username and authentication details cfg := &ssh.ClientConfig{ User: "username", Auth: auths, } cfg.SetDefaults() // Establishes a connection to the remote server client, err := ssh.Dial("tcp", "aws-hostname:22", cfg) if err != nil { log.Fatal(err) } // Creates a new session in the established connection session, err = client.NewSession() if err != nil { log.Fatal(err) } log.Println("Successfully established a session!") }</code>
Avec cet exemple de code amélioré, il est possible de se connecter à un serveur à distance à l'aide d'une clé privée via SSH. paquet dans Go. Des fonctionnalités supplémentaires telles que l'authentification basée sur un agent ont également été intégrées pour une démonstration plus complète de l'ensemble du processus.
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!