====== SSH et SFTP avec Clés Publique/Privée ====== ===== Prérequis ===== On a déjà un accès **SSH** et **SFTP** sur le serveur en tant qu'utilisateur **marc** en entrant le mot de passe lorsqu'il est demandé. ssh marc@monserveur.net sftp://marc@monserveur.net ===== Générer la paire de clés SSH ===== Sur un PC fraîchement installé, on peut soit copier les fichiers contenant les clés qu'on utilise déjà sur un autre PC, ou on peut générer de nouvelles clés avec cette commande : ssh-keygen -t rsa -b 2048 -C "mon-adresse@email" * **Chemin de la sauvegarde** : accepter le chemin et le nom du fichier proposés. * **Passphrase** : ne pas mettre de passphrase. Si on préfère en mettre une, il faudra l'entrer à chaque fois qu'on utilise la paire de clés. Deux fichiers sont créés : /home/marc/.ssh/id_rsa # clé privée /home/marc/.ssh/id_rsa.pub # clé publique ===== Envoyer la clé publique sur le serveur ===== * Entrer cette commande : ssh-copy-id marc@monserveur.net * Entrer le mot de passe de l'utilisateur * La clé publique est ajoutée au fichier **authorized_keys** de cet utilisateur sur le serveur ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx marc@email.com Tester la connexion, si tout se passe bien le mot de passe n'est plus demandé. ssh marc@monserveur.net ===== Si on utilise GIT ===== Sur le même serveur j'ai un utilisateur nommé **git** dont le dossier ''home'' est rempli de dépôts. /home/git/projet1.git/ /home/git/projet2.git/ ... Sur mon PC j'utilise **git** en tant que **marc**, donc je désire envoyer la clé publique de **marc** sur le compte de **git** également, de cette façon la clé sera utilisée lorsque je ferai des **git push** ssh-copy-id git@monserveur.net Cette fois la clé publique est ajoutée au fichier **authorized_keys** de l'utilisateur **git** sur le serveur. Tester la connexion : ssh git@monserveur.net Et je clone un projet localement en faisant : git clone git@monserveur.net:/home/git/projet1.git ===== Fichier de configuration ===== :!: Il **FAUT** que le fichier de configuration soit lisible uniquement par l'utilisateur, sinon **ssh** refusera de l'utiliser. cd ~/.ssh chmod 600 config -rw------- ~/.ssh/config Host serveur1 Hostname 123.45.67.89 Port 22 User marc Host serveur2 Hostname www.monserveur.net Port 22 User root IdentityFile ~/.ssh/serveur2.key Après il suffit d'appeler **ssh serveur1** ou **ssh serveur2**.