|
|
|
|
|
- Principe
- Comment le faire ?
- Envoi direct de commandes
- Dialogue avec un serveur SSH
Dialoguer avec un serveur SSH
Le protocole SSH (Secure Shell) est un protocole réseau sécurisé permettant d'établir une connexion chiffrée entre deux systèmes. Ce protocole est souvent utilisé pour l'administration à distance de serveurs car il assure la confidentialité et l'intégrité des données échangées, protégeant ainsi contre les interceptions et les attaques. Ce protocole permet d'exécuter des commandes à distance sur ces machines de manière sécurisée. Un serveur peut donc supporter le protocole sécurisé SSH pour recevoir des commandes à distance. En WLangage, les fonctions SSH permettent d'exécuter des commandes à travers ce protocole. Le protocole géré est SSH-2. Il existe deux méthodes pour communiquer avec un serveur SSH : Remarque : Il est possible de copier des fichiers via SSH en utilisant les fonctions SCP. Envoi direct de commandes L'envoi directe de commandes se fait à l'aide de la fonction SSHCommande. Les paramètres de connexion au serveur SSH doivent être décrits dans une variable de type sshSession. Exemple :
cMaSession est une sshSession
buffSortie est un Buffer
cMaSession.Adresse = "127.0.0.1"
cMaSession.Port = 22
cMaSession.Utilisateur = "login"
cMaSession.MotDePasseUtilisateur = "pass"
nExitCode est un entier
sSortie est une chaîne ANSI
sSortieErr est une chaîne ANSI
(nExitCode, sSortie, sSortieErr) = SSHCommande(cMaSession, SAI_Commande)
SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
RETOUR
FIN
SAI_ExitCode = nExitCode
SAI_StdOut = UTF8VersChaîne(sSortie)
SAI_StdErr = UTF8VersChaîne(sSortieErr)
Remarque : Par défaut, la fonction SSHCommande ouvre la session SSH, exécute la commande puis ferme la session SSH. Nouveauté SaaSPour exécuter plusieurs commandes SSH sans fermer la session SSH, il suffit de conserver la connexion SSH active puis de la fermer après l'exécution des commandes, à l'aide des fonctions suivantes :
| | | Permet de conserver la session SSH active entre plusieurs envois de commandes (via la fonction SSHCommande) à un serveur SSH. Cette fonction est une nouveauté disponible à partir de WINDEV Suite SaaS 2025 Update 2. | | Permet d'arrêter la session SSH qui était active pour permettre l'envoi groupé de plusieurs commandes. Cette fonction est une nouveauté disponible à partir de WINDEV Suite SaaS 2025 Update 2. |
Dialogue avec un serveur SSH Le dialogue avec le serveur SSH se fait à l'aide des fonctions suivantes :
Les paramètres de connexion au serveur SSH doivent être décrits dans une variable de type sshSession. Etape 1 : Connexion au serveur SSHLa connexion au serveur s'effectue grâce à la fonction WLangage SSHConnecteShell. Cette fonction attend en paramètre une variable de type sshSession qui contient les informations de connexion au serveur SSH : - adresse du serveur,
- nom d'utilisateur,
- mot de passe,
- port à utiliser.
gSessionSSH est une sshSession
gSessionSSH.Adresse = SAI_Serveur
gSessionSSH.Port = SAI_Port
gSessionSSH.Utilisateur = SAI_User
gSessionSSH.MotDePasseUtilisateur = SAI_Mot_de_passe
SSHConnecteShell(gSessionSSH)
Remarques: - Il est conseillé de modifier le port par défaut (port 22). Etant donné que le SSH est un protocole extrêmement répandu, il est aussi beaucoup "attaqué".
- Il est conseillé de filtrer les IP autorisées à accéder au protocole SSH.
Connexion via un couple clé privée / clé publiqueLa connexion au serveur SSH peut également s'effectuer par un couple clé privée / clé publique.
gSessionSSH est une sshSession
gSessionSSH.Adresse = SAI_Serveur
gSessionSSH.Port = SAI_Port
gSessionSSH.Utilisateur = SAI_User
gSessionSSH.CléPrivée = SAI_Clé_privée
gSessionSSH.MotDePasseCléPrivée = SAI_Mot_de_passe
SSHConnecteShell(gSessionSSH)
Dans ce cas, le serveur possède la clé publique (voir la documentation de votre serveur SSH pour la configuration nécessaire). Le client (l'application qui se connecte) possède quant à lui la clé privée. L'authentification est donc effectuée par le chiffrement d'un texte envoyé au serveur. Si le serveur arrive à déchiffrer ce texte, cela signifie que le client possède bien la clé privée. Cette clé privée peut être protégée par un mot de passe. Etape 2 : Envoi des commandesL'envoi des commandes s'effectue via la fonction SSHEcrit. Cette fonction attend en paramètres : - la connexion SSH, à travers la variable de type sshSession,
- la commande à exécuter, dans une variable de type Buffer.
Cette commande envoyée doit obligatoirement se terminer par un caractère <10>.
sCommande est un Buffer = SAI_Commande_à_envoyer + Caract(10)
SSHEcrit(gSessionSSH, sCommande)
Etape 3 : La lecture des résultatsLa lecture des résultats et sorties s'effectue à l'aide de la fonction WLangage SSHLit. Cette fonction permet de lire le texte renvoyé par le serveur SSH. Etape 4 : La déconnexionLa déconnexion du serveur SSH s'effectue de manière très simple avec la fonction WLangage SSHDéconnecteShell en lui passant en paramètre la connexion : SSHDéconnecteShell(gSessionSSH)
Exemple complet :
cMaSession est une sshSession
cMaSession.Adresse = "127.0.0.1"
cMaSession.Port = 22
cMaSession.Utilisateur = "login"
cMaSession.MotDePasseUtilisateur = "pass"
SI SSHConnecteShell(cMaSession) ALORS
Info("Session Ouverte")
bufSortie est un Buffer = "data"
SSHEcrit(cMaSession, bufSortie)
SSHDéconnecteShell(cMaSession)
FIN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|