Un message au sujet de systemd-tty-ask-password-agent apparaît dans le terminal, et le tunnel n'est pas monté. La lecture tentante est que le VPN a rejeté un mot de passe et que quelque chose attend maintenant une correction. Il est plus exact de dire qu'un service a demandé à systemd une entrée interactive, et que la demande n'a pas encore reçu de réponse. Quel service a demandé, et quel secret il veut, sont deux questions que vous pouvez régler avant de taper quoi que ce soit.

Deux conditions décident qui doit répondre

La première condition est de savoir si vous avez lancé cette instance volontairement. Une demande qui suit une action de votre part est à vous d'y répondre, et une qui apparaît sans action correspondante appartient à autre chose. La seconde est de savoir si le secret est une authentification de compte ou une protection de clé, car ils vivent à des endroits différents et passent par des chemins de code différents. Les deux réponses sont visibles dans le journal si vous regardez avant d'agir.

Quand les deux réponses sont claires, la décision est simple : répondez par le chemin d'invite pris en charge du service lui-même. Quand l'une des deux est floue, le bon geste est d'enquêter plutôt que de taper un mot de passe dans une invite que vous ne pouvez pas attribuer.

C'est toute la règle, et il vaut la peine de l'énoncer avant les commandes. Tout ce qui suit en découle.

Listez la demande avant de taper quoi que ce soit

L'agent peut énumérer ce qui est en attente sans rien répondre. sudo systemd-tty-ask-password-agent --list imprime les demandes en souffrance, et cette sortie est la preuve dont vous avez besoin pour relier une invite à une unité. Lisez-la avant de fournir un identifiant, et gardez les descriptions de demandes hors de tout collage de diagnostic public.

Corrélez la liste avec l'opération que vous avez lancée et avec l'unité qui la possède. Si rien dans la liste ne correspond à votre action, l'invite que vous avez vue appartient à un autre service et ce n'est pas à vous de la résoudre. Le nom de l'unité dans la liste est le seul lien fiable entre une invite et un service.

Ne répondez pas à une demande que vous ne pouvez pas attribuer. Le coût de l'attente est un délai, tandis que le coût de répondre à la mauvaise invite est un identifiant au mauvais endroit.

De quel secret l'instance a-t-elle réellement besoin ?

auth-user-pass concerne l'authentification du compte auprès du service VPN, et sans fichier d'identifiants, le comportement documenté est de demander sur la console. askpass obtient au contraire la phrase secrète qui déverrouille le matériel de clé protégé, et il le fait avant que le processus ne passe en arrière-plan. Ce sont des secrets différents avec des durées de vie différentes.

Les formats de fichiers diffèrent aussi. La forme compte attend une ligne de nom d'utilisateur et une ligne de mot de passe, tandis que le fichier de phrase secrète de clé lit la première ligne comme son mot de passe. Copier la recette du fichier d'identifiants de l'autre rôle produit généralement une autre invite plutôt qu'une solution. Un fichier de mauvaise forme est pire que pas de fichier, car la panne se déplace vers un endroit que personne ne surveille.

Vérifiez quelle directive l'instance utilise avant de décider quoi taper. Le nom de la directive vous indique pour quel secret l'invite est émise.

Ce que --query fait et que --list ne fait pas

--query traite chaque demande en attente sur le terminal appelant, ce qui est une action bien plus large que de répondre à une seule invite. Ce n'est pas un sélecteur OpenVPN, et sur une machine occupée, il peut répondre à des demandes appartenant à d'autres unités. Le mode veille est encore plus large, car il continue de traiter les demandes à mesure qu'elles arrivent.

Utilisez le mécanisme le plus étroit qui fonctionne. Pour un seul service, le flux d'invite propre à ce service est plus étroit qu'un agent global, et il garde la réponse attachée à l'unité qui a demandé.

Transformer une demande ponctuelle en agent global sans surveillance parce qu'un avis est apparu une fois, c'est ainsi qu'une gêne temporaire devient une conception permanente. La même prudence s'applique à la désactivation des unités de notification de mot de passe sur tout l'hôte.

Décidez, puis consignez le choix

Pour un déploiement sans surveillance, convenez de la source des identifiants, des permissions de fichier et du calendrier de renouvellement avec le propriétaire de la connexion. Un second facteur interactif peut nécessiter une personne ou une identité de service dédiée. Supprimer l'invite ne produit pas cette authentification, et retirer auth-user-pass ne casse qu'un service qui en a besoin.

Après l'interaction, regardez la même instance pour son événement suivant et testez la ressource privée. Si rien n'est en attente, revenez à l'état de l'instance au lieu de démarrer chaque unité OpenVPN de l'hôte.

Articles similaires