Exécuter des commandes à distance via SSH dans Go CLI
Pour exécuter des commandes sur une machine distante à l'aide d'une Go CLI, vous devez utiliser le package "golang.org/x/crypto/ssh".
Exécution de commande simple
Voici une fonction qui démontre une utilisation simple de l'exécution d'une seule commande sur un machine distante et renvoyant la sortie :
import ( "bytes" "golang.org/x/crypto/ssh" "io" "net" ) func remoteRun(user string, addr string, privateKey string, cmd string) (string, error) { key, err := ssh.ParsePrivateKey([]byte(privateKey)) if err != nil { return "", err } config := &ssh.ClientConfig{ User: user, HostKeyCallback: ssh.InsecureIgnoreHostKey(), Auth: []ssh.AuthMethod{ ssh.PublicKeys(key), }, } client, err := ssh.Dial("tcp", net.JoinHostPort(addr, "22"), config) if err != nil { return "", err } session, err := client.NewSession() if err != nil { return "", err } defer session.Close() var b bytes.Buffer session.Stdout = &b err = session.Run(cmd) return b.String(), err }
Utilisation :
output, err := remoteRun("root", "MY_IP", "PRIVATE_KEY", "ls") if err != nil { // handle error }
Exécution multi-sauts
Pour exécution en un seul saut, vous pouvez simplement établir d'abord une connexion SSH à la machine intermédiaire à l'aide de l'adresse et de la clé privée fournies. Une fois connecté, utilisez la fonction remoteRun au sein de cette session pour exécuter la commande sur la machine interne.
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!