{"id":669,"date":"2026-01-12T01:14:12","date_gmt":"2026-01-12T00:14:12","guid":{"rendered":"https:\/\/www.fjmlab.com\/blog\/?p=669"},"modified":"2026-01-26T02:24:31","modified_gmt":"2026-01-26T01:24:31","slug":"ansible-openssh-pour-windows","status":"publish","type":"post","link":"https:\/\/www.fjmlab.com\/blog\/?p=669","title":{"rendered":"Ansible Openssh pour Windows"},"content":{"rendered":"\n<p>Cela fait longtemps que je n&rsquo;ai rien \u00e9crit dans mon blog. Alors, je vais vous expliquer comment installer et utiliser Ansible. L&rsquo;outil phare des admin linux qui devient \u00e9galement de plus en plus int\u00e9ressant pour g\u00e9rer simplement vos machines Windows.<\/p>\n\n\n\n<p>Son grand avantage est qu&rsquo;il est open source, tr\u00e8s bien document\u00e9, facile \u00e0 comprendre et simple \u00e0 utiliser.<\/p>\n\n\n\n<p>Pour ce POC (proof of concept) qui consiste \u00e0 r\u00e9aliser une maquette pour d\u00e9montrer la faisabilit\u00e9 technique d&rsquo;une solution. J&rsquo;ai besoin d&rsquo;avoir \u00e0 minima 3 serveurs :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SRV-AD01, d\u00e9j\u00e0 install\u00e9 dans mon infra VMware (Windows 2019 Eval).<\/li>\n\n\n\n<li>SRV-TEST en <a href=\"https:\/\/info.microsoft.com\/ww-landing-windows-server-2022.html?lcid=fr\" data-type=\"link\" data-id=\"https:\/\/info.microsoft.com\/ww-landing-windows-server-2022.html?lcid=fr\" target=\"_blank\" rel=\"noreferrer noopener\">Windows Serveur 2022 Eval<\/a>.<\/li>\n\n\n\n<li>SRV-ANSIBLE sous linux Debian 13, <a href=\"https:\/\/cdimage.debian.org\/debian-cd\/current\/amd64\/iso-cd\/debian-13.3.0-amd64-netinst.iso\" target=\"_blank\" rel=\"noreferrer noopener\">debian-13.3.0-amd64-netinst.iso<\/a>.<\/li>\n<\/ul>\n\n\n\n<p>Je vous laisse installer ces serveurs par vous m\u00eame, vous trouverez facilement des tutoriels sur internet comme par exemple : <a href=\"https:\/\/www.it-connect.fr\/creer-un-domaine-ad-avec-windows-server-2016\/\" target=\"_blank\" rel=\"noreferrer noopener\">installation d&rsquo;un serveur Windows avec la mise en place d&rsquo;un nom de domaine<\/a>.<\/p>\n\n\n\n<p>L&rsquo;objectif est de d\u00e9ployer Ansible pour qu&rsquo;il communique en SSH avec vos serveurs Windows, via une cl\u00e9 d&rsquo;authentification. <\/p>\n\n\n\n<p>Depuis l&rsquo;<a href=\"https:\/\/learn.microsoft.com\/fr-fr\/windows-server\/administration\/openssh\/openssh_install_firstuse?tabs=powershell&amp;pivots=windows-server-2022\" target=\"_blank\" rel=\"noreferrer noopener\">implantation d&rsquo;OpenSSH dans Windows<\/a>, ce protocole est devenu la nouvelle norme recommand\u00e9e par Microsoft. Bien qu&rsquo;il soit facile \u00e0 mettre en \u0153uvre, il offre une connexion tr\u00e8s s\u00e9curis\u00e9e.<\/p>\n\n\n\n<p>Pour aller plus loin dans le volet de la s\u00e9curit\u00e9, j&rsquo;ai rajout\u00e9 \u00e0 cette configuration un <a href=\"https:\/\/learn.microsoft.com\/fr-fr\/windows-server\/identity\/ad-ds\/manage\/group-managed-service-accounts\/group-managed-service-accounts\/manage-group-managed-service-accounts?tabs=aduc\" target=\"_blank\" rel=\"noreferrer noopener\">compte de Service GMSA<\/a>, ce dernier va permettre de lancer les scripts ansibles en administrateur local sur le serveur Cible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SRV-AD01, Cr\u00e9ation du Compte de Service Ansible<\/h2>\n\n\n\n<p>Depuis Windows 2012, il existe 2 nouveaux type de compte s\u00e9curis\u00e9s qui permettent de g\u00e9rer des services dans un domaine Active Directory (AD). L&rsquo;un \u00e0 usage unique et l&rsquo;autre pour un usage multiserveurs. C&rsquo;est ce dernier qui nous int\u00e9resse.<\/p>\n\n\n\n<p><em>Nous lancerons la plupart des commandes via un terminal PowerShell, (clique droit : ex\u00e9cut\u00e9 en Administrateur) : <\/em><br><em><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Pensez \u00e0 adapter les chemins des scripts des commandes \u00e0 votre environnement.<\/mark><\/em><br><br><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">>><\/mark> Pour commencer, on cr\u00e9e un groupe de s\u00e9curit\u00e9, puis on y ajoute les serveurs membres qui recevront le compte de service<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Cr\u00e9ation du Groupe :<\/mark>\n\nNew-ADGroup -Name \"Ansible_GMSA_Grp_Servers\" -Path \"OU=Server Groups,OU=Groups,OU=HQ Corporate,DC=ad,DC=fjmlab,DC=com\" -GroupScope Global -Description \"Groupe de Serveur\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Ajout des Membres,<\/mark> <em>en l'occurrence pour cette exemple un seul Membre.<\/em> \n\nAdd-ADGroupMember -Identity Ansible_GMSA_Grp_Servers -Members SRV-TEST$\n\n<em>Ne pas oublier le $ pour signifier que l'objet membre est un ordinateur.<\/em><\/code><\/pre>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">>><\/mark> Cr\u00e9ation du compte gMSA : on v\u00e9rifie d&rsquo;abord la pr\u00e9sence de la cl\u00e9 de distribution sinon suivez le <a href=\"https:\/\/learn.microsoft.com\/fr-fr\/windows-server\/identity\/ad-ds\/manage\/group-managed-service-accounts\/group-managed-service-accounts\/create-the-key-distribution-services-kds-root-key\" target=\"_blank\" rel=\"noreferrer noopener\">tuto de Microsoft<\/a><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"296\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-1.png\" alt=\"\" class=\"wp-image-691\" style=\"width:840px;height:auto\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-1.png 834w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-1-300x106.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-1-768x273.png 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/figure>\n\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Puis, on cr\u00e9e le compte avec les param\u00e8tres suivants : <\/mark>\n\nNew-ADServiceAccount ansible -DNSHostName ansible.ad.fjmlab.com -PrincipalsAllowedToRetrieveManagedPassword Ansible_GMSA_Grp_Servers -KerberosEncryptionType AES256 -ManagedPasswordIntervalInDays 30 -Description \"Compte de service pour Ansible\" -SamAccountName ansible -Enabled $true<\/code><\/pre>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">On retrouve le compte dans son UO par d\u00e9faut :<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-2-1024x451.png\" alt=\"\" class=\"wp-image-694\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-2-1024x451.png 1024w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-2-300x132.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-2-768x338.png 768w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-2.png 1206w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-6c5da5ad5c0c7d23114e2fd94063cc6c\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-right has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-e511d49a0bd36bd2685a8ce95196e4af\"><a href=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=2\" data-type=\"link\" data-id=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=2\">page suivante<\/a> -&gt;<\/p>\n<\/div>\n<\/div>\n<\/blockquote>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">SRV-TEST, Configuration Openssh et ajout du compte de service <\/h2>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&gt;&gt;<\/mark> Installation de Openssh-Serveur via les fonctionnalit\u00e9s facultatives ou en PowerShell.<\/strong> <\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-pale-cyan-blue-color has-text-color has-link-color wp-elements-9c0fc1608eb5b6ed9f15261afc5c4bcc is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Attention si les mises \u00e0 jour de votre serveur cible sont g\u00e9r\u00e9es par un serveur WSUS, vous ne pourrez pas installer les fonctionnalit\u00e9s facultatives. <\/em><\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code><em>Pour ce faire voici l'astuce qui vous permettra de d\u00e9sactiver temporairement les mise \u00e0 jour WSUS :<\/em>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">En passe la valeur de la cl\u00e9 du registre suivante \u00e0 \"0\" :<\/mark>\n<em> <\/em>\n<em>Set-ItemProperty -Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\" -Name \"UseWUServer\" -Value<\/em> 0\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Puis on red\u00e9marre le service Windows Update :<\/mark>\n\nGet-service wuauserv | Restart-Service\n\n(<em>Pour r\u00e9activer, il suffit de refaire avec la valeur du la cl\u00e9 de registre \u00e0 \"1\")<\/em><\/code><\/pre>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"690\" height=\"789\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-4.png\" alt=\"\" class=\"wp-image-698\" style=\"aspect-ratio:0.8745475462274475\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-4.png 690w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-4-262x300.png 262w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ci-dessus la fen\u00eatre des fonctions facultatives . <\/em><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Ajout de la fonctionnalit\u00e9 :<\/mark>\n\nAdd-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Configuration du service :<\/mark>\n\nStart-Service sshd\nSet-Service -Name sshd -StartupType 'Automatic'\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Ajout d'une r\u00e8gle d'acc\u00e8s au pare-feu :<\/mark>\n\nNew-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Configuration du shell par d\u00e9faut :<\/mark>\n\nNew-ItemProperty -Path \"HKLM:\\SOFTWARE\\OpenSSH\" -Name DefaultShell -Value \"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -PropertyType String -Force\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Pour finir, on red\u00e9marre le service<\/mark> \n\nRestart-Service sshd<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<blockquote class=\"wp-block-quote has-pale-cyan-blue-color has-text-color has-link-color wp-elements-fbda8948dce2af72f4fe2067766a97bb is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Comme vous devrez cependant configurer la fonctionnalit\u00e9, je vous conseil plut\u00f4t de suivre les lignes de commandes que d&rsquo;essayer de passer par les interfaces Windows.<\/p>\n<\/blockquote>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">>><\/mark> Implantation du compte de service<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Ajout de la fonction Powershell pour Active Directory:<\/mark>\nInstall-WindowsFeature RSAT-AD-Powershell\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Ajout du compte de Service :<\/mark>\nInstall-ADServiceAccount -Identity ansible\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Test de pr\u00e9sence du compte :<\/mark> \nTest-AdServiceAccount -Identity ansible<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"281\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-5-1024x281.png\" alt=\"\" class=\"wp-image-712\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-5-1024x281.png 1024w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-5-300x82.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-5-768x211.png 768w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-5.png 1260w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&gt;&gt;<\/mark><\/strong> Pour finir on ajoute la compte de Service au groupe Administrateur local sur serveur SRV-TEST, pour changer, je vous le fait via l&rsquo;interface utilisateur. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"705\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-6-1024x705.png\" alt=\"\" class=\"wp-image-718\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-6-1024x705.png 1024w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-6-300x207.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-6-768x529.png 768w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-6.png 1229w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-dfe9a29af2c6bbef6504a34e6305b156\">&lt;- <a href=\"https:\/\/www.fjmlab.com\/blog\/?p=669\" data-type=\"link\" data-id=\"https:\/\/www.fjmlab.com\/blog\/?p=669\">page pr\u00e9cedente<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-right has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-d6713955239eef59c75bdbfa870a137a\"><a href=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=3\" data-type=\"link\" data-id=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=3\">page suivante<\/a> -&gt;<\/p>\n<\/div>\n<\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">SRV-ANSIBLE, installation du packages et configuration ssh.<\/h2>\n\n\n\n<p>A ce stade, je suppose que votre serveur Linux Debian a \u00e9t\u00e9 install\u00e9 et est pleinement op\u00e9rationnel. Nous allons donc ouvrir un session distance via le mode SSH de <a href=\"https:\/\/putty.org\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">Putty<\/a>. Pour ma part, lors de l&rsquo;installation, j&rsquo;ai configurer un compte non root avec un pseudo (slicy).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"988\" height=\"403\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-8.png\" alt=\"\" class=\"wp-image-726\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-8.png 988w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-8-300x122.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-8-768x313.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/figure>\n\n\n\n<div style=\"height:31px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&gt;&gt;<\/mark> Installation et Configuration de Ansible :<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Installation du packages :<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">apt -y install ansible-core<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">V\u00e9rification de la version :<\/mark> \n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ansible --version<\/mark><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Vous devriez obtenir en retour la version 2.9 :<\/mark>\n\nansible --versionansible &#91;core 2.19.4]\nconfig file = \/etc\/ansible\/ansible.cfg\nconfigured module search path = &#91;'\/home\/slicy\/.ansible\/plugins\/modules', '\/usr\/share\/ansible\/plugins\/modules']\nansible python module location = \/usr\/lib\/python3\/dist-packages\/ansible\nansible collection location = \/home\/slicy\/.ansible\/collections:\/usr\/share\/ansible\/collections\nexecutable location = \/usr\/bin\/ansible\npython version = 3.13.5 (main, Jun 25 2025, 18:55:22) <a href=\"\/usr\/bin\/python3\">GCC 14.2.0<\/a>\njinja version = 3.1.6\npyyaml version = 6.0.2 (with libyaml v0.2.5)<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">On ajoute le r\u00e9pertoire manquant dans \/etc :<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">mkdir \/etc\/ansible<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">On cr\u00e9e le fichier Hosts contenant la configuration de bases :<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">sudo nano \/etc\/ansible\/hosts<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">On ajoute la configuration de base :<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">&#91;Windows]<\/mark>\nSRV-TEST.ad.fjmlab.com\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-light-green-cyan-color\">&#91;all:vars]<\/mark>\nansible_connection = ssh\nansible_shell_type = powershell\nansible_user = ansible$\n<\/code><\/pre>\n\n\n\n<p>C&rsquo;est fait au plus simple. Le compte de connexion \u00e9tant un comte de service, il est normal qu&rsquo;il finisse par un $. Cependant vous devriez lire <a href=\"https:\/\/docs.ansible.com\/projects\/ansible\/latest\/inventory_guide\/intro_inventory.html\" target=\"_blank\" rel=\"noreferrer noopener\">documentation officielle<\/a> qui explique plus en d\u00e9tails les configurations.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&gt;&gt; <\/mark>Configuration de la connexion s\u00e9curis\u00e9e SSH<\/strong><\/p>\n\n\n\n<p>On commence par la cr\u00e9ation des Paires de cl\u00e9 priv\u00e9 et cl\u00e9 public pour l&rsquo;authentification s\u00e9curis\u00e9e. <br>Plus d&rsquo;information dans la documentation de Microsoft : <a href=\"https:\/\/learn.microsoft.com\/fr-fr\/windows-server\/administration\/openssh\/openssh_keymanagement\" target=\"_blank\" rel=\"noreferrer noopener\">Authentification bas\u00e9e sur des cl\u00e9s dans OpenSSH pour Windows<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">On g\u00e9n\u00e8re les cl\u00e9s en 4096 Bits<\/mark>, <em>l'algorithme par d\u00e9faut est ed25519. Pendant le processus, il vous sera demander un mot de passe pour la double authentification. Pour ma part j'ai laiss\u00e9 vide mais je vous conseil fortement de mettre une phrase pass en production. <\/em>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ssh-keygen -b 4096<\/mark>\n\n<em>Sur l'\u00e9cran, vous devriez voir quelque chose ressemblant \u00e0 cela :<\/em>\n\nEnter passphrase (empty for no passphrase):\nEnter same passphrase again:\nYour identification has been saved in ~.ssh\/id_ed25519\nYour public key has been saved in ~.ssh\/id_ed2551.pub\nThe key fingerprint is:\nSHA256:OIzc1yE7joL2Bzy8!gS0j8eGK7bYaH1FmF3sDuMeSj8 username@LOCAL-HOSTNAME\n\nThe key's randomart image is:\n+--&#91;id25519]--+\n|        .        |\n|         o       |\n|    . + + .      |\n|   o B * = .     |\n|   o= B S .      |\n|   .=B O o       |\n|  + =+% o        |\n| *oo.O.E         |\n|+.o+=o. .        |\n+----&#91;SHA256]-----+\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Les 2 cl\u00e9s sont ajout\u00e9es dans le r\u00e9pertoire cach\u00e9 .ssh<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ls .ssh<\/mark>\n\nid_ed25519  id_ed25519.pub  known_hosts  known_hosts.old\n\n<em>- La cl\u00e9 priv\u00e9 est sans extension, vous devez la conserver dans un endroit s\u00fbr.\n- La cl\u00e9 publique *.pub est celle que vous aller export\u00e9 sur vos serveur cible (SRV-TEST)<\/em>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Enfin, on rajoute la cl\u00e9 priv\u00e9e \u00e0 l'agent ssh avec les 2 commandes suivantes :<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ssh-agent bash<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ssh-add ~\/.ssh\/id_ed25519<\/mark><\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">&gt;&gt;<\/mark> Export de la cl\u00e9 publique sur le serveur Windows SRV-TEST<\/strong><\/p>\n\n\n\n<p>Toujours depuis votre session PuTTY, lancer la commande suivante pour afficher le contenu de la cl\u00e9 publique :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">cat .ssh\/id_ed25519.pub<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">Copi\u00e9 avec la sourie par s\u00e9lection et clique droit :<\/mark>\n\n<mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKczi+TlofWkMJD7HLVBNedSmSpVct2RgmVBw+bD4Os7 slicy@ansible<\/mark><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pour pouvoir apporter des modifications et des ajouts sur le serveur cible, vous aller devoir ouvrir une session avec le compte d&rsquo;administration.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dans l&rsquo;explorateur de fichier, il faudra coch\u00e9 la case \u00ab\u00a0\u00e9l\u00e9ments masqu\u00e9s\u00a0\u00bb. <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aller dans le r\u00e9pertoire \u00ab\u00a0C:\\ProgramData\\ssh\u00a0\u00bb pour y ajouter les fichiers suivant avec le contenu de de votre copie pr\u00e9c\u00e9dente \u00ab\u00a0administrators_authorized_keys\u00a0\u00bb et \u00ab\u00a0authorized_keys\u00a0\u00bb<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"646\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-9-1024x646.png\" alt=\"\" class=\"wp-image-739\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-9-1024x646.png 1024w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-9-300x189.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-9-768x485.png 768w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-9-542x343.png 542w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-9.png 1272w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Puis ouvrir le ficher \u00ab\u00a0sshd_config\u00a0\u00bb et y ajouter les \u00e9l\u00e9ments suivants :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>PubkeyAuthentication yes\nPasswordAuthentication no\nStrictModes no\nMatch Group administrators\n       AuthorizedKeysFile __PROGRAMDATA__\/ssh\/administrators_authorized_keys<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"525\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-10.png\" alt=\"\" class=\"wp-image-741\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-10.png 855w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-10-300x184.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-10-768x472.png 768w\" sizes=\"auto, (max-width: 855px) 100vw, 855px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pour finir relancer le service sshd<\/strong>.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-amber-color\">F\u00e9licitation !<\/mark> En Bonus pour \u00eatre arriv\u00e9 \u00e0 ce point de la lecture de l&rsquo;article, je vous donne un exemple de script PowerShell de d\u00e9ploiement rapide d&rsquo;OpenSSH-Server avec ses fichiers de configuration.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Variables de Configuration --------------------------------------------------\n\n$UseWUServer = Get-ItemPropertyValue -Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\" -Name \"UseWUServer\"\n$PackageName = Get-WindowsPackage -Online | where { $_.PackageName -like \"*OpenSSH-Serveur*\"}\n$ConfigFileSource = \"\\\\srv-file01\\d$\\Logiciels\\OpenSSH-Server\\ConfigFiles\\*\"\n$ConfigFileDestination = \"C:\\ProgramData\\ssh\"\n$ConfigFireWall= New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22\n$ConfigOpenSSHPowershell = New-ItemProperty -Path \"HKLM:\\SOFTWARE\\OpenSSH\" -Name DefaultShell -Value \"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe\" -PropertyType String -Force\n\n# Main -----------------------------------------------------------------------\n\nif (!($PackageName)) {\n\t\n\t#D\u00e9sactivation de WSUS\n\tIf ($UseWUServer -eq \"1\") {\n    \tSet-ItemProperty -Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\" -Name \"UseWUServer\" -Value 0\n    \tGet-service wuauserv | Restart-Service\n\t}\n\n\t# Installation de la fonctionnalit\u00e9 \n\tAdd-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0\n\t\n\t# Configuration du Service\n\tCopy-item -Path $ConfigFileSource -Destination $ConfigFileDestination -Recurse\n\t$ConfigFireWall\n\t$ConfigOpenSSHPowershell\n\tSet-Service -Name sshd -StartupType 'Automatic'\n\tRestart-Service sshd\n\t\n\t# R\u00e9activation de WSUS\n\tIf ($UseWUServer -eq \"1\") {\n    \tSet-ItemProperty -Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU\" -Name \"UseWUServer\" -Value 1\n    \tGet-service wuauserv | Restart-Service\n\t}\n}<\/code><\/pre>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-92a08f86a25d6977970314fed5b7a64d\">&lt;- <a href=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=2\" data-type=\"link\" data-id=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=2\">page pr\u00e9cedente<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-right has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-93afbf2356bb539f925998f00dbac377\"><a href=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=4\" data-type=\"link\" data-id=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=4\">page suivante<\/a> -&gt;<\/p>\n<\/div>\n<\/div>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">SRV-ANSIBLE, mise en pratique<\/h2>\n\n\n\n<p>Au final nous allons pouvoir tester l&rsquo;installation avec des exemples simples comme un un test de ping et ajouter un \u00ab\u00a0playbook\u00a0\u00bb pour lancer nos premi\u00e8res fonctions avanc\u00e9es. <\/p>\n\n\n\n<p>Il possible \u00e9galement de r\u00e9aliser des op\u00e9rations plus complexes par la cr\u00e9ation d&rsquo;un \u00ab\u00a0R\u00f4le\u00a0\u00bb qui inclus en ensemble de playbook qui seront lanc\u00e9s dans un ordre d\u00e9termin\u00e9. L&rsquo;objectif de cette article n&rsquo;\u00e9tant pas de d\u00e9crire le d\u00e9tail des usages, je vous renvois \u00e0 la documentation officielle :<br><a href=\"https:\/\/docs.ansible.com\/projects\/ansible\/latest\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.ansible.com\/projects\/ansible\/latest\/index.html<\/a><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Depuis votre session putty, lanc\u00e9 un simple test de ping avec la commande : <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ansible all -m ansible.windows.win_ping<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">SRV-TEST.ad.fjmlab.com | SUCCESS =&gt; {\n    \"changed\": false,\n    \"ping\": \"pong\"<\/mark>\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nous allons \u00e9crire notre premier playbook :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">sudo nano \/etc\/ansible\/playbook_Powershell_Check.yml<\/mark>\n\n<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">- hosts<\/mark>: Windows\n  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">gather_facts<\/mark>: <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-purple-color\">no<\/mark>\n  <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">tasks<\/mark>:\n    <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">- name<\/mark>: test powershell\n      <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">win_shell<\/mark>: $host.version\n      <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">register<\/mark>: result_get_host\n\n    <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">- name<\/mark>: display result_get_host\n      <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">debug<\/mark>:\n        <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">var<\/mark>: result_get_host\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>On lance le playbook :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-pale-cyan-blue-color\">ansible-playbook \/etc\/ansible\/playbook_Powershell_Check.yml<\/mark>\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-11-1024x559.png\" alt=\"\" class=\"wp-image-752\" srcset=\"https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-11-1024x559.png 1024w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-11-300x164.png 300w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-11-768x419.png 768w, https:\/\/www.fjmlab.com\/blog\/wp-content\/uploads\/2026\/01\/image-11.png 1359w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-large-font-size\"><strong>Voil\u00e0 !<\/strong><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-059515fef03459acb12b043047391d7b\">&lt;- <a href=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=3\" data-type=\"link\" data-id=\"https:\/\/www.fjmlab.com\/blog\/?p=669&amp;page=3\">page pr\u00e9cedente<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-right has-cyan-bluish-gray-color has-text-color has-link-color wp-elements-813584b4974bde8e988a2ddbd1ee4902\"><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cela fait longtemps que je n&rsquo;ai rien \u00e9crit dans mon blog. Alors, je vais vous expliquer comment installer et utiliser Ansible. L&rsquo;outil phare&hellip;<\/p>\n","protected":false},"author":1,"featured_media":754,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[24,26,25,28,27],"class_list":["post-669","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft","tag-ansible","tag-gmsa","tag-openssh","tag-powershell","tag-windows"],"_links":{"self":[{"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=669"}],"version-history":[{"count":109,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/669\/revisions"}],"predecessor-version":[{"id":811,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/669\/revisions\/811"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/754"}],"wp:attachment":[{"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fjmlab.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}