L`accès à distance par SSH

Transcription

L`accès à distance par SSH
L’accès à distance par SSH
Objectif : Se connecter à distance à un Unix/Linux depuis Unix/Linux par ssh
SSH signifie Secure SHell. C’est un protocole qui permet de faire des connexions sécurisées (i.e.
chiffrées) entre un serveur et un client SSH. Nous allons utiliser le programme OpenSSH, qui est la
version libre du client et du serveur SSH.
Installation de SSH
Le client SSH est disponible dans le paquet openssh-client, qui est préinstallé.
Pour pouvoir vous connecter à distance, vous pouvez maintenant installer le serveur
SSH avec la commande : apt-get install ssh
L’installation comporte une étape de génération des clefs de chiffrement.
Démarrage : /etc/init.d/ssh start
Arrêter : /etc/init.d/ssh stop
redémarrer : /etc/init.d/ssh restart
Configuration du serveur SSH
Le fichier de configuration du serveur SSH est /etc/ssh/sshd_config
Le fichier /etc/ssh/ssh_config, est le fichier de configuration du client SSH.
Contenu du serveur : /etc/ssh/sshd_config
Port 22 : Signifie que le serveur SSH écoute sur le port 22, qui est le port par défaut de SSH. Vous
pouvez le faire écouter sur un autre port en changeant cette ligne.
Vous pouvez aussi le faire écouter sur plusieurs ports à la fois en rajoutant des lignes similaires.
PermitRootLogin yes : Signifie que vous pouvez vous connecter en root par SSH. Vous pouvez
changer et mettre no, ce qui signifie que pour vous connecter en root à distance, vous devrez d’abord
vous connecter par SSH en tant que simple utilisateur, puis utiliser la commande su pour devenir root.
Sans cela, un pirate n’aurait qu’à trouver le mot de passe du compte root, alors que là, il doit trouver
votre login et votre mot de passe.
X11Forwarding yes : Signifie que vous allez pouvoir travailler en déport d’affichage par SSH.
TP SSH
Page 1/6
•
Pour connaitre TOUS les serveurs réseaux à l'écoute, et ceux qui sont actifs, utilisez netstat -atn (ou
netstat -at). 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_distant_ssh
Se connecter par SSH
Authentification par mot de passe
•
A partir de votre poste linux1, connectez-vous au compte du serveur linux2.
ssh login@ IP_du_serveurSSH_distant, (ex : ssh [email protected])
login étant un compte valide défini sur le serveur_distant. A la place du nom du serveur distant,
utiliser l'adresse IP.
•
Passez en mode super_utilisateur (root) sur le serveur distant, avec la commande su, mais
attention ! respectez l'environnement.
La commande ssh, permet d’exécuter une commande sur un serveur distant.
•
Vérifiez que les serveurs httpd (apache) et proftpd fonctionnement sur le serveur de votre voisin ?
•
Eventuellement les arrêter.
•
Arrêter l’ordinateur distant avec la commande : halt
•
Lancez la commande who et repérez le fichier lié à la console affichée sur login. Au passage, vous
remarquez que votre propre connexion SSH est identifiée
•
Affichez un message sur la machine distante (/dev/pts/[no de console]) :
echo "message transmis" > /dev/pts/1
• effacez le contenu de la console distante : clear > /dev/pts/1
• Pour terminer une session de travail ssh, taper exit
Authentification par une clé privée et une clé publique
Une connexion SSH en utilisant une clé privée et une clé publique est plus sécurisée qu’une connexion
classique par mot de passe. De plus elle permet d’éviter de ressaisir un mot de passe à chaque
connexion.
L'identification par clés asymétriques met en place 3 fichiers que l'agent utilisera :
•
~/.ssh/id_rsa : la clé privée qui permet de décrypter l'information et de s'identifier (en fournissant
la « passphrase »)
•
~/.ssh/authorized_keys : la liste des clés publiques autorisées à accéder au compte de
l'utilisateur.
TP SSH
Page 2/6
•
~/.ssh/id_rsa.pub : la clé publique (qui sert à crypter). C'est le fichier à transmettre à quiconque
nous autorise à utiliser son compte, le contenu étant ajouté dans son fichier personnel
authorized_keys.
Création de la clé privée et de la clé public :
Générer ses clefs (RSA ou DSA)
Pour générer un couple de clefs RSA, tapez :
ssh-keygen -t rsa
•
Se connecter avec votre login sur la machine locale et générer une paire de clés en tapant la
commande :
ssh-keygen -t rsa
- entrer le fichier ( défaut : /home/user/.ssh/id_rsa)
- entrer une phrase (exemple : factice )
the key fingerprint is :
da:cd:9c:da:cb:a5:16:d2:cd:ff:64:09:64:24:fc:4a user@localhost
Après la saisie de la pass-phrase (Mot de passe long), cette commande va générer deux fichiers dans le
dossier /home/user/.ssh/ . On y trouve :
-
de la clé privée correspondante dans le fichier id_rsa (droit 600)
-
de la clé publique dans id_rsa.pub (droit 644)
Vous y trouvez aussi le fichier known_hosts qui contient les clés des serveurs auxquels vous vous
êtes déjà connecté. Quels sont les droits de ce dernier fichier ?
Quels sont les droits sur le dossier .ssh ?
Que signifie le point (.) devant ssh?
•
Ensuite, il faut exporter la clé public sur le ou les serveurs distant à utiliser avec ssh : en mode
commande placez-vous dans votre dossier /home/user/.ssh/ et taper :
ssh-copy-id -I id_rsa.pub login@serveur_distant
Ce qui crée le fichier ~/.ssh/authorized_keys sur le serveur distant.
•
A chaque connexion sur la machine distante, ssh demande la "passphrase" qui a servi à crypter la
clé privée
•
A partir de votre compte , se connecter au serveur distant en tapant :
ssh login@serveur_distant
TP SSH
Page 3/6
Enter passphrase for key '/home/user/.ssh/id_rsa'
Se connecter par SSH sans taper de mot de passe
Utiliser ssh-agent
Pour éviter de saisir la pass-phrase, il est possible d’utiliser le démon ssh-agent qui se chargera de
mémoriser la pass-phrase pour éviter de la ressaisi.
Tant que la console est ouverte la surveillance par ssh-agent s'exerce !
Sur votre poste local tapez : ssh-agent screen
La commande suivante, permet de mémoriser la pass-phrase une fois pour toute pendant la durée
de la session : Taper :
ssh-add
taper passphrase for /home/user/.ssh/id_rsa:
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
Une fois cette commande saisie, il est possible de se connecter aux différents serveurs ssh sans
saisir aucun mot de passe ou pass-phrase.Taper :
ssh login@serveur_distant
--> Établissement de la session de travail directement !
exit
logout
Copier des fichiers entre un serveur et un client ssh
En console
Le transfert de fichiers par SSH est possible d’au moins 2 façons :
•
avec scp (comme Ssh CoPy), qui s’utilise la même manière que la commande cp ;
•
avec sftp, logiciel très basique qui s’utilise comme ftp.
Ici également, vous pouvez utiliser la méthode d’authentification par mot de passe ou, l’utilisation restant
la même dans les deux cas.
En graphique
GNOME permet de se connecter à un serveur SSH directement dans Nautilus. Comme pour FTP, cela
permet d’accéder aux fichiers distants depuis toutes les applications GNOME.
Pour cela, allez dans le menu Raccourcis > Se connecter à un serveur, puis choisissez SSH, et réglez
les paramètres de connexion :
Type de serveur : SSH
Serveur : adresse_IP_serveur_distant
TP SSH
Page 4/6
Dossier : /home/user/
Nom d’utilisateur : user
Utiliser SCP
Syntaxe générale :
scp [-r] source destination, où source et destination désigne l'ensemble des f ichiers à copier ou le
répertoire d'accueil.
Si les fichiers à copier sont locaux, on utilise la syntaxe habituelle (cp).
S'ils sont distants, la notation est celle de ssh : login@serveur_distant:fichiers
Exemples :
scp -r
login@serveur_distant:nomsDesFichiers nomDuDossierCible, pour copier du serveur
distant les fichiers vers le répertoire nomDuDossierCible (repertoire d’accueil local ou vous êtes)
scp -r
nomDesFichiersLocaux
login@serveur_distant:nomDossierCible, pour copier les
fichiers locaux vers le répertoire nomDossierCible situé sur le serveur distant
Travai à faire
•
Effectuez les copies suivantes, en expliquant ce qui est fait. Vérifiez les résultats
•
A partir de votre machine copier le fichier services dans le dossier /home/login/Bureau/
scp /etc/services login@serveur_distant:/home/login/Bureau/
•
sur la machine distante copier le fichier images dans le dossier Images
login@serveur_distant$ scp login@serveur_distant:~/images
•
~/Images
sur la machine distante accéder au dossier Images et créer le dossier tmp
login@serveur_distant$ cd ~/Images ; mkdir tmp ; touch tmp
•
sur la machine distante
login@serveur_distant$
scp -r /usr/share/doc/bash-completion/TODO login@serveur_distant:~/Images/
•
TP SSH
Copier le fichier ~/Images/tmp/tmp présent sur la station serveur_distant dans ~/Images, de
votre station.
Page 5/6
Exécuter des applications graphiques distantes (export display)
On peut faire afficher sur une console graphique cliente, des applications qui s'exécutent sur le serveur
X d'une machine distante.
Si le serveur et le client sont convenablement configurés, on peut directement exécuter l'application
distante par ssh avec l'option -X. Pour cela, le serveur distant doit avoir la directive X11Forwarding yes
dans /etc/ssh/sshd_config, et le client local doit comporter la directive ForwardX11 yes dans
/etc/ssh/ssh_config. Sous debian, il est également nécessaire de modifier le fichier
/etc/gdm/gdm.conf et y ajouter DisallowTCP=false
Sur votre poste linux taper :
xhost + adresse_IP_serveur_distant
ssh -X user@ adresse_IP_serveur_distant
Lancer l’application graphique en ligne de commande.
Exemples : Sur la machine distante taper :
xclock &
# pour essayer
firefox &
# pour travailler
xeyes &
A quoi sert la commande xhost ?
Analyse de trames SSH
A l'aide de l'analyseur de paquets Wireshark. Analyser les segments TCP échangés dans un dialogue
SSH lorsque vous vous connectez sur un serveur distant.
•
Le serveur écoute sur le port 22.
•
Il utilise TCP comme protocole de transport.
•
SSH permet de se connecter de manière sécurisée car les communications sont chiffrées sur une
machine distante.
•
Utilisez comme filtre de capture : taper dans le champ « Filter »
tcp.port == 22
•
Lancez la capture et tapez la commande :
•
Se connecter à la machine distante avec
ssh login@serveur_distant
•
Arrêtez la capture.
•
Analysez les trames capturées et vérifiez que le mot de passe est crypté.
TP SSH
Page 6/6