TP introduction à SSH
Le service ssh
sshd est un serveur qui permet de communiquer de façon sécurisée, en établissant un canal de communication entre lui et ses clients
- Il fonctionne seul (et non comme telnet et ftp sous la dépendance de xinetd) et écoute les requêtes adressées
par les clients au port 22
- Installation : vérifier avec la commande rpm -q le présence des 3 paquetages openssh, openssh-server et
openssh-clients
Session de travail cliente
- Pour en savoir plus sur le serveur ssh, consulter man ssh. Les fichier de configuration sont placés dans
/etc/sshd
- Syntaxe : ssh user@serveur, user étant un compte valide défini sur serveur. A la place du
nom du serveur, utiliser l'adresse IP, s'il y a une difficulté de résolution des noms (rappel : ou renseignez le fichier
/etc/hosts)
- Connectez-vous au compte stage/stg du serveur voisin. Vous êtes dans la même situation qu'avec telnet,
prise de controle à distance
- Vous pouvez ouvrir une session root sur le serveur, avec la commande su, mais
attention ! respectez l'environnement
- Y passer quelques commandes (sans rien abimer !).
en particulier créer un compte (login/mot de passe) sur cette machine voisine.
- Pour terminer une session de travail ssh, taper exit
- Application à la gestion de serveurs distants
- Se connecter sur un serveur ssh distant comme stage
- Y Ouvrir une session root
- Les serveurs httpd (apache) et mysqld y sont-ils en fonctionnement ? Eventuellement les démarrer.
- S'y connecter comme root de mysqld (mysql -u root -p). Examiner les bases existantes (show databases;)
- Y créer une nouvelle base de données (mysql> create database cdi)
- Se déconnecter de mysqld, puis de la session superviseur, puis de ssh
- Problème rencontré
En cas de changement dans la correspondance client-serveur (par ex. changement de disque sur l'une des machines,
pour le meme nom ou la meme adresse IP), les clés ne corrrespondant plus, la connexion est refusée par sécurité.
Pour passer outre, intervenir dans le fichier $HOME/.ssh/know_hosts et supprimer la ligne décrivant la connexion
au serveur.
Examen du serveur
- Votre serveur sshd est-il actuellement en exécution sur votre machine ? Comment feriez-vous pour arreter ou
démarrer ce service
- Plus généralement, pour connaitre TOUS les serveurs réseaux à l'écoute, et ceux qui sont actifs,
utilisez netstat -ntl (ou netstat -tl). Plus d'infos : consulter le man(ual)
- Utiliser last | less sur votre machine locale pour connaitre les clients qui se sont connectés
récemment sur votre serveur sshd
Transfert de fichiers par scp
scp (secure copy), permet de copier des fichiers et des arborescences, en utilisant ssh pour sécuriser les
transferts
- syntaxe générale:
scp [-r] source destination, où source et destination désigne l'ensemble des fichiers à copier ou le répertoire d'accueil.
Si les fichiers sont locaux, on utilise la syntaxe habituelle.
S'ils sont distants, la notation est celle de ssh : user@serveur:fichiers
- Exemples :
scp -r user@serveur:fichiers rep-local , pour copier du serveur distant les fichiers vers le répertoire rep d'accueil local
scp -r fichiers-locaux user@serveur:rep , pour copier les fichiers locaux vers le répertoire situé sur le serveur distant
- Effectuez les copies suivantes, en expliquant ce qui est fait. Vérifiez les résultats
[stage@p0x]$ scp /etc/services stage@p0y:/home/stage/
[stage@p0x]$ scp stage@p0y:/etc/passwd /home/stage/
- stage crée le répertoire d'accueil chez lui sur p0x. La copie se fait sur p0y, de p0y vers p0x
[stage@p0x]$ cd /home/stage ; mkdir tmp
[stage@p0y]$ scp -r /usr/share/doc/bash-doc stage@p0x:/home/stage/tmp/
- Copier le fichier
/usr/share/webmin0.92.tar.gz
présent sur la station p10 dans /usr/local/
de votre station.
- Sauvez vous "rebondir", sur une 3ème machine ?
Application
On a vu comment "prendre" la main sur une console distante avec ssh, et faire exécuter à distance des
applications. Voici comment faire pour faire afficher des applications sur sa console.
# tout le monde est autorisé à utiliser le serveur X
[user@local]$ xhosts +
[user@local]$ ssh login@serveur
[login@serveur]$ export DISPLAY=iplocal:0.0
[login@serveur]$ xclock & # pour essayer
[login@serveur]$ konqueror & # pour travailler