Introduction
SSH fournit un accès chiffré en ligne de commande à un autre compte Linux, tandis que SCP utilise la même authentification et le même canal de transport pour copier des fichiers. Lors d’une première connexion sécurisée, vous vérifiez la clé d’hôte du serveur ; les connexions suivantes peuvent utiliser une clé personnelle au lieu d’envoyer à chaque fois le mot de passe du compte.
Dans ce lab, le compte isolé remoteuser sur localhost sert d’hôte distant. Même si les deux comptes utilisent la même VM de formation, le protocole SSH, les invites d’authentification, le répertoire personnel distant et les transferts de fichiers se comportent comme dans un workflow de base entre deux hôtes. Le chemin d’accès SSH par défaut de labex n’est pas modifié.
Examiner la cible SSH
Dans cette étape, vous allez identifier le client SSH, résoudre le nom de la cible, vérifier qu’un serveur est à l’écoute et afficher un aperçu de sa clé d’hôte publique.
Accédez à l’espace de travail local :
cd /home/labex/project/ssh-lab
Affichez la version du client OpenSSH. Ce programme écrit sa version sur la sortie d’erreur standard ; 2>&1 la combine donc avec la sortie standard :
ssh -V 2>&1
Résolvez la cible locale à l’aide de la configuration système de résolution des noms :
getent hosts localhost
Vérifiez qu’un serveur SSH écoute sur le port TCP 22 :
sudo ss -ltnp | grep ':22'
ssh-keyscan récupère les clés d’hôte publiques sans ouvrir de session. Transmettez la clé ED25519 à ssh-keygen -lf - pour afficher son empreinte :
ssh-keyscan -t ed25519 localhost 2>/dev/null | ssh-keygen -lf -
Dans un environnement réel, comparez cette empreinte à une valeur de confiance fournie par l’administrateur avant de l’accepter. Enregistrez un résumé compact de la cible :
printf 'target=localhost\nport=22\nuser=remoteuser\n' > ssh-target.txt
cat ssh-target.txt
Ouvrir votre premier shell distant
Dans cette étape, vous allez vérifier une clé d’hôte, vous authentifier avec un mot de passe, examiner le compte distant et fermer le shell distant.
Connectez-vous avec la syntaxe user@host :
ssh remoteuser@localhost
Comme la configuration a supprimé toute entrée précédente de clé d’hôte pour localhost, SSH vous demande si vous faites confiance à l’empreinte affichée. Après l’avoir comparée à celle de l’étape 1, saisissez :
yes
À l’invite du mot de passe, saisissez :
RemoteLab123!
Le mot de passe ne s’affiche pas pendant la saisie. Après la connexion, l’invite appartient à remoteuser, et non à labex. Vérifiez l’identité distante, l’hôte et le répertoire courant :
whoami
hostname
pwd
Créez un fichier indicateur distant dans le répertoire personnel du compte distant :
mkdir -p ~/ssh-lab
printf 'connected as %s\n' "$(whoami)" > ~/ssh-lab/connected.txt
Fermez le shell distant et revenez à l’invite locale de labex :
exit
La commande exit ferme uniquement le shell distant ; le terminal local reste ouvert.
Exécuter une commande distante
Dans cette étape, vous allez exécuter des commandes à distance sans ouvrir de shell interactif persistant et enregistrer leur sortie localement.
Revenez à l’espace de travail local si nécessaire :
cd /home/labex/project/ssh-lab
Placez une commande entre apostrophes après l’hôte. SSH l’exécute à distance et renvoie sa sortie à votre terminal local :
ssh remoteuser@localhost 'whoami; uname -srm; uptime'
Saisissez RemoteLab123! lorsque le système vous le demande. Les points-virgules séparent les commandes interprétées par le shell distant.
Exécutez une seconde commande distante et redirigez la sortie renvoyée vers un fichier local :
ssh remoteuser@localhost 'printf "remote_user=%s\nremote_home=%s\n" "$(whoami)" "$HOME"' > remote-context.txt
Saisissez à nouveau le mot de passe. La redirection > est traitée par votre shell local ; remote-context.txt est donc créé dans l’espace de travail local :
cat remote-context.txt
Le fichier doit identifier remoteuser et /home/remoteuser.
Transférer un fichier avec SCP
Dans cette étape, vous allez envoyer un fichier local, examiner son contenu à distance, puis le télécharger sous un nouveau nom local.
Créez un exemple de configuration local :
cd /home/labex/project/ssh-lab
printf 'mode=training\nport=8080\n' > app.conf
SCP utilise la syntaxe user@host:path pour désigner un chemin distant. Envoyez le fichier vers le répertoire distant incoming, déjà préparé :
scp app.conf remoteuser@localhost:/home/remoteuser/incoming/app.conf
Saisissez RemoteLab123! lorsque le système vous le demande. Vérifiez le contenu distant avec SSH :
ssh remoteuser@localhost 'cat /home/remoteuser/incoming/app.conf'
Saisissez à nouveau le mot de passe. Inversez maintenant la source et la destination pour télécharger le fichier :
scp remoteuser@localhost:/home/remoteuser/incoming/app.conf downloaded-app.conf
Saisissez le mot de passe, puis comparez l’original local et la copie téléchargée :
cmp app.conf downloaded-app.conf && echo "The files match"
Transférer récursivement un répertoire
Dans cette étape, vous allez utiliser le mode récursif de SCP pour copier une arborescence de répertoires vers le compte distant.
Créez une petite arborescence de projet locale :
cd /home/labex/project/ssh-lab
mkdir -p site/assets
printf '<h1>SSH transfer practice</h1>\n' > site/index.html
printf 'body { color: navy; }\n' > site/assets/style.css
L’option -r copie récursivement les répertoires et leur contenu :
scp -r site remoteuser@localhost:/home/remoteuser/incoming/
Saisissez RemoteLab123! lorsque le système vous le demande. Affichez l’arborescence distante avec une commande SSH exécutée en une seule fois :
ssh remoteuser@localhost 'find /home/remoteuser/incoming/site -type f -printf "%P\n" | sort'
Saisissez à nouveau le mot de passe. Vous devez voir assets/style.css et index.html.
Générer une clé SSH personnelle
Dans cette étape, vous allez créer une paire de clés ED25519 dédiée et vérifier ses permissions ainsi que son empreinte.
Une paire de clés contient une clé privée, qui reste en votre possession, et une clé publique, qui peut être installée sur un compte distant. Générez une clé dédiée pour les exercices, sans phrase secrète, afin que la validation automatisée puisse l’utiliser :
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/labex_remote_ed25519 -N '' -C 'labex-remote-practice'
L’option -t sélectionne l’algorithme, -f sélectionne le fichier, -N '' définit une phrase secrète vide pour les exercices et -C ajoute un libellé. En production, les clés doivent normalement utiliser une phrase secrète robuste lorsque les contraintes d’automatisation ne l’interdisent pas.
Examinez les deux fichiers et leurs permissions :
ls -l ~/.ssh/labex_remote_ed25519 ~/.ssh/labex_remote_ed25519.pub
La clé privée doit être lisible uniquement par labex. Le fichier .pub est destiné à être partagé. Affichez l’empreinte de la clé publique :
ssh-keygen -lf ~/.ssh/labex_remote_ed25519.pub
Ne copiez et ne divulguez jamais la clé privée.
Installer et utiliser la clé publique
Dans cette étape, vous allez installer la clé publique pour remoteuser, vous connecter sans invite de mot de passe et vérifier un transfert de fichiers basé sur une clé.
ssh-copy-id ajoute une clé publique à ~/.ssh/authorized_keys du compte distant avec des permissions appropriées :
ssh-copy-id -i ~/.ssh/labex_remote_ed25519.pub remoteuser@localhost
Saisissez RemoteLab123! pour cette dernière opération authentifiée par mot de passe. Testez la clé privée dédiée avec -i :
ssh -i ~/.ssh/labex_remote_ed25519 remoteuser@localhost 'printf "key authentication works\n" > ~/ssh-lab/key-authenticated.txt; cat ~/ssh-lab/key-authenticated.txt'
Cette commande ne doit pas demander le mot de passe du compte distant. Utilisez la même identité pour SCP :
scp -i ~/.ssh/labex_remote_ed25519 remoteuser@localhost:~/ssh-lab/key-authenticated.txt key-authenticated.txt
cat key-authenticated.txt
Le fichier téléchargé doit contenir key authentication works. La clé d’hôte authentifie le serveur ; votre clé privée vous authentifie auprès du compte distant. Ces deux clés répondent à des problèmes de confiance différents.
Résumé
Vous avez vérifié une clé d’hôte SSH, ouvert et fermé un shell distant, exécuté des commandes distantes en une seule fois et distingué la redirection locale de l’exécution distante. Vous avez envoyé et téléchargé des fichiers avec SCP, puis copié récursivement un répertoire.
Vous avez également généré une paire de clés ED25519 dédiée, protégé la clé privée, installé uniquement la clé publique et réutilisé cette identité pour SSH et SCP sans mot de passe. Ces compétences constituent les bases nécessaires à une administration distante sûre pour débutants.



