====== 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**.