-
créer une paire de clefs
-
créer un user (avec les droits souhaités)
-
ajouter la clef publique sur le serveur cible
À faire en même temps que moi
Création d'une paire de clés (publique et privée)
ssh-keygen -t ecdsa -b 521
Dans gitlab, on copie la clé prvivé on créé une variable SSH_PRIVATE
.
On Créé également une variable SSH_TARGET
avec l'ip de la vm target.
Connectons-nous en ssh sur la vm target
Et créons un utilisateur gitlab
sudo adduser gitlab-prénom
sudo usermod -aG sudo gitlab-prénom
sudo su - gitlab-prénom
Ensuite créons le dossier .ssh
mkdir .ssh
et ensuite on rajoute la clé publique précédement créé dans le fichier authorized_keys
echo "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBACb59WLcHEVoT2whP1FAP4xPKSqCVQe3aBboj2e2Y/fCXEagxpLfniki2+ID+KhsI6y1owPdhANzW+odKmiUPyDkADqZes3ssTH79FVrl8g8SwpjMqEjFkfh4OUKKXJKJhTUDYxcnYd/YplaqF7yK85sm+PbjbxkBNAY/vZ33rUsL/9uQ== azureuser@gitlab-1" > ~/.ssh/authorized_keys
Et le fichier gitlab-ci.yml.
image: debian:latest
job1:
before_script:
- 'command -v ssh-agent >/dev/null || ( apt update && apt install -y openssh-client )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $SSH_TARGET >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
- ssh $SSH_USER@$SSH_TARGET "hostname && echo 'HELLO DAS'>> ./das.txt"
tags:
- docker
Afin d'éviter la répétion de code, on peut utiliser les ancres, faisant parties du langage Yaml
image: debian:latest
.ssh: &ssh
- 'command -v ssh-agent >/dev/null || ( apt update && apt install -y openssh-client )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan $SSH_TARGET >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
job1:
before_script: *ssh
script:
- ssh $SSH_USER@$SSH_TARGET "hostname && echo 'HELLO DAS job 1' >> ./das.txt"
tags:
- docker
job2:
variables:
SSH_TARGET: 10.0.0.5
before_script: *ssh
script: ssh $SSH_USER@$SSH_TARGET "hostname && echo 'HELLO DAS job 2' >> ./das.txt"
tags:
- docker