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
- 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