Skip to content

Latest commit

 

History

History
102 lines (78 loc) · 2.38 KB

11.ssh_runner.md

File metadata and controls

102 lines (78 loc) · 2.38 KB

SSH docker vers target


  • 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

Les ancres

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