# Mise en place clé SSH Git

##### Prérequis 

Si Gestionnaire de repository Self hosted (Gitea) :

- Activer le port sur le service Gitea (2222-&gt;22)
- Ouvrir le par-feu serveur et du routeur (Box internet)
- Activer le service SSH dans le app.ini du service

##### Générer la clé de sécurité

Sur la machine local exécuter la commande suivante pour générer la clé SSH :

```bash
ssh-keygen -t ed25519 -C "your_email@example.com"
```

Il n'est pas nécessaire de mettre une passphrase.

##### Ajouter la clé au compte

Pour ajouter la nouvelle clé au compte Gitea il faut récupérer le contenu de la clé publique :

```bash
cat ~/.ssh/id_ed25519.pub
```

Le contenu de la clé ressemble à ceci :

```bash
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHpRFB++5649q68s47audlJzpfdVUfAL3qJhxvaKkKSDHCsq your_email@example.com
```

Puis sélectionner le contenu dans le presse papier.

Ouvrir les paramètres du compte puis se rendre dans l'onglet "Clés SSH / GPG".

Ajouter une nouvelle clé, donner un nom à la clé, puis coller le contenu du presse papier.

##### Tester la connexion avec la nouvelle clé

Pour tester la connexion il faut exécuter la commande suivante :

```bash
ssh -T -p <port> -i ~/.ssh/id_ed25519 git@domain.name
```

Si la connexion est time-out essayer de se connecter en local depuis le serveur hébergeant le service : `ssh -T -p <port> <a href="mailto:git@localhost">git@localhost</a>` Si la connexion réussi c'est que le problème provient d'un par-feu, sinon c'est un problème de configuration du service.

##### Cloner le repository

Une fois la clé ajouté au compte Git il va être possible de cloner le repository via l'url SSH :

```bash
# Cloner un repo
git clone ssh://git@<domaine.name>:<port>/<user>/DemoRepoGit.git
# Par exemple : git clone ssh://git@git.galaxy.com:2222/john/monprojet.git

# Ajouter un nouvel origin si repo déjà existant
git remote add origin ssh://git@<domaine.name>:<port>/<user>/DemoRepoGit.git
```

Il est toujours possible de modifier un remote origin si il y a un problème.   
Lister les origines `git remote -v` puis pour modifier un origin :

```bash
git remote set-url origin git@<domain.name>:<port>/<user>/<repo>.git
```