se connecter à instance gitlab-runner

Le principe à retenir : récupérer les identifiants actuels de l’instance et de l’endpoint EICE, récupérer temporairement la clé privée depuis AWS Secrets Manager, puis ouvrir la connexion SSH.
Procédure — Connexion au GitLab Runner privé AWS

Exécute :

aws ec2 describe-instances
–region eu-central-1
–filters « Name=tag:Name,Values=runner« 
« Name=instance-state-name,Values=running »
–query ‘Reservations[].Instances[].{ID:InstanceId,IP:PrivateIpAddress,AZ:Placement.AvailabilityZone,State:State.Name}’
–output table

Note l’identifiant de l’instance (i-…) et sa zone de disponibilité (AZ).
3. Retrouver l’endpoint EICE
L’endpoint permet d’accéder à l’instance privée sans lui attribuer d’adresse IP publique.

aws ec2 describe-instance-connect-endpoints
–region eu-central-1
–query « InstanceConnectEndpoints[0].InstanceConnectEndpointId »
–output text

  1. Ouvrir la connexion SSH
    Remplace INSTANCE_ID et ENDPOINT_ID par les valeurs obtenues aux étapes précédentes. Adapte aussi l’AZ si l’instance n’est plus en eu-central-1a.

Créer un dossier temporaire protégé

Nettoyer les fichiers à la fermeture de la session

tmpdir=$(mktemp -d)
chmod 700 "$tmpdir"
trap 'rm -rf "$tmpdir"' EXIT

Récupérer la clé privée depuis Secrets Manager

aws secretsmanager get-secret-value \
  --secret-id ansible_ssh_key_unique_v1 \
  --region eu-central-1 \
  --query SecretString \
  --output text > "$tmpdir/id_rsa" || exit 1

Générer la clé publique correspondante

chmod 600 "$tmpdir/id_rsa"
ssh-keygen -y -f "$tmpdir/id_rsa" > "$tmpdir/id_rsa.pub" || exit 1
chmod 644 "$tmpdir/id_rsa.pub"

Autoriser temporairement cette clé sur l’instance

Et se connecter

aws ec2-instance-connect send-ssh-public-key \
  --instance-id i-xxxxxxxxxxxx \
  --instance-os-user ubuntu \
  --ssh-public-key "file://$tmpdir/id_rsa.pub" \
  --availability-zone eu-central-1a \
  --region eu-central-1 \
&& aws ec2-instance-connect ssh \
  --instance-id i-xxxxxxxxxxxxxxxxxx \
  --os-user ubuntu \
  --connection-type eice \
  --eice-options endpointId=eice-xxxxxxxxxxxxx \
  --private-key-file "$tmpdir/id_rsa" \
  --region eu-central-1

Retour en haut