account ssh keys

  • Global (account) > copier from server public key
  • Variables dans projet > hostkeys + private
  • tester comppte > ssh -T git@framagit.org
  • vérifier hosts > https://docs.gitlab.com/ee/ci/ssh_keys/#verifying-the-ssh-host-keys

problème de connexion avec la clé privée du repository

$ echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
Enter passphrase for (stdin): 
Authenticating with credentials from /root/.docker/config.json
ERROR: Job failed: exit code 1

Solution : ne pas mettre de password lorsqu’on crée la clé ed25519 sur le serveur (lors de ssh-keygen -t ed25519 -C "email@example.com")

Usage avec SCP

Et problèmes éventuels de connexion losque le script voudra pousser des choses sur le serveur via SCP, et que se posera un pb d’identification (source)

  • (Generate a key pair) => vu précédemment
  • (Copy the private key to a gitlab CI variable (let’s call it SSH_PRIVATE_KEY)) => ok, vu avant
  • Copy the public key to the server gitlab will connect to and add it to your ~/.ssh/authorized_keys file
  • Tell your CI pipeline to use the private key that is stored in the Gitlab CI variable

Pour illustrer, voici les parties du before_script

- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh

et

- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts

Et donc, cette partie du deploy > script focntionnera

script:
  - scp -rp ./public/* patjennings@81.53.198.226:/var/www/thomasguesnon.net

Lorsque l’adresse ip du serveur change; modifier :

  • le .gitlab-ci.yml du projet, en y modifiant les anciennes ip du serveur par les nouvelles
  • la variable SSH_KNOWN_HOSTS du projet (en faisant ssh-keyscan {ip} à partir du serveur)

La clé SSH de l’utilisateur reste la même