fbpixel
Étiquettes :

Le protocole SSH (Secure Socket Shell) est très utilisé pour se connecter à un serveur, ou une machine, distant connectée à un réseau. Il permet d’échanger des fichiers, de créer, modifier ou lancer des scripts sur des machines distantes.

SSH est généralement installé de base dans les distribution Linux ou Windows.

Description du protocole SSH

Le protocole SSH (Secure Shell) est un protocole de communication cryptographique utilisé pour établir des connexions sécurisées et confidentielles entre deux systèmes informatiques via un réseau. Son principe repose sur l’utilisation de méthodes de chiffrement asymétrique et symétrique pour protéger les données transitant entre les systèmes. L’authentification des utilisateurs se fait généralement à l’aide de paires de clés cryptographiques, comprenant une clé publique et une clé privée, ce qui garantit une vérification sécurisée de l’identité de l’utilisateur. L’utilité principale du protocole SSH réside dans son rôle de sécurisation des accès à distance aux serveurs, de transfert de fichiers sécurisés et de gestion à distance des systèmes, offrant une protection robuste contre les menaces potentielles, notamment les attaques de type « man-in-the-middle » et les interceptions de données sensibles.

Ouvrir une session SSH

Pour se connecter à un appareil

ssh <host>@<serveur>

exemple pour un raspberry pi

ssh pi@192.168.1.2

Une fois la connexion établie, le moniteur vous demandera le mot de passe pour accéder au terminal distant.

raspberry-pi-ssh-connexion Le protocole SSH pour se connecter à distance

Si votre machine distante le permet, le tag -X permet d’afficher les fenêtres de votre machine

ssh -X <host>@<serveur>

Copier un fichier distant avec le protocole SSH

La commande à utiliser pour copier un fichier d’une machine distante à une autre est la commande scp

scp <source> <destination>

scp root@192.168.1.33:script.py C:\Users\ADMIN

Un mot de passe sera demander pour valider la copie.

ssh-copy-distant-file Le protocole SSH pour se connecter à distance

Se connecter avec un mot de passe

Sur linux, il est possible d’installer et d’utiliser SSH

sudo apt-get install sshpass
sshpass -p {password} ssh {user}@{ipaddress}

Sur Windows, Putty peut se charger de la gestion du mot de passe

Installer PuTTy puis ajouter le dossier de l’exécutable dans la variable d’environnement Path (C:\Program Files\PuTTY)

putty -ssh "root@192.168.1.32" -pw root #pour ouvrir une connexion en directe

Pour envoyer des commandes en direct, nous utilsons plink

plink -ssh <username>@<host> -pw <password> <command>

Exemple

plink -ssh root@192.168.1.32 -pw root uname -a
ssh-cmd-passord-putty-plink Le protocole SSH pour se connecter à distance

Utiliser Python pour envoyer des commandes SSH

Nous utilisons la bibliothèque subprocess pour exécuter des commande du terminal

import subprocess

subprocess.Popen(f"ssh {user}@{host} {cmd}", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()

Envoyer des commandes SSH nécessitant un mot de passe via Python

python3 -m pip install paramiko
ssh = paramiko.SSHClient()
#ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #if missing
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("uname -a")
print("connected via SSH")
print(ssh_stdout.read().decode())
ssh.close()
ssh-connexion-paramiko Le protocole SSH pour se connecter à distance

Applications

Sources