2012-10-03 14 views
0

Si nous courons le Jenkins esclave en tant que git service Windows ne parvient pas à chercher avec l'erreurGit ne fonctionne pas lorsque Jenkins esclave est en cours d'exécution en tant que service Windows

The server's host key is not cached in the registry 

Le service est en cours d'exécution en tant qu'utilisateur de domaine spécifique nous avons mis en place en utilisant du mastic. Si nous nous connectons à la machine avec cet utilisateur, Git Bash fonctionne sans demander de mot de passe, donc la clé SSH est configurée correctement.

Nous avons découvert que si vous utilisez la ligne de commande pour démarrer l'esclave Jenkins sous l'utilisateur, nous définissons la clé SSH comme la construction fonctionne. La commande que nous utilisons est

javaws http://brick:8083/computer/nsw-buildbox1/slave-agent.jnlp 

Cela fonctionne parfaitement bien. Je suspecte que malgré le fait que le service fonctionne toujours comme le même utilisateur de domaine il y a quelque chose de différent où il ne peut pas trouver le dossier .ssh. Quelqu'un at-il rencontré ce problème et connaissez-vous un moyen de le réparer? Où un service Windows recherche-t-il les hôtes connus?

savoir Même nous avons une solution de contournement, il signifie que si vous redémarrez la machine la construction ne fonctionnera pas jusqu'à ce que vous vous connectez et exécutez la commande de démarrage

Répondre

0

Ce n'est pas le dossier .ssh, mais le registre.

Mount the registry hive of that user, et de rechercher sous HKEY_CURRENT_USER\Software\SimonTatham\Putty\SshHostKeys. Copiez votre clé hôte là, elle devrait contenir la clé de l'hôte.

+0

Sur l'utilisateur, nous avons le service en cours d'exécution car il a déjà une entrée dans cette voie. L'exécution d'un service Windows en tant qu'utilisateur spécifique (pas de système local ou d'utilisateur réseau) a-t-elle une autre ruche que si vous vous connectez réellement avec cet utilisateur? si oui, où est-il situé –

+0

Chaque utilisateur a sa propre ruche de registre. C'est dans le profil de l'utilisateur. Le tristement célèbre fichier 'USER.DAT'. –

+0

Ok, donc si vous avez un utilisateur appelé Bob et sous le service que vous définissez pour commencer à utiliser Bob au lieu du système local, ne pas utiliser le même User.Dat dans C: \ users \ Bob \ NTUSER.Dat (je suppose c'est le NTUSER.Dat pour Win7). Cela ne peut pas être le cas car cela fonctionne lorsque nous l'exécutons à partir de la ligne de commande pour cet utilisateur. alors quel fichier .dat un service Windows utiliserait-il? –

2

Je sais que cela pourrait être en retard pour répondre à cette question, mais c'est la cause de votre problème.

  • Lorsque vous esclave en cours d'exécution par: javaws http://brick:8083/computer/nsw-buildbox1/slave-agent.jnlp vous exécutez l'esclave en fait que l'utilisateur actuellement connecté, le système ont déjà votre cache de session ssh pour l'utilisateur en cours correctement. Mais lorsque vous avez choisi de l'installer en tant que service, votre service Windows ne fonctionne pas réellement en tant qu'utilisateur actuel. cela explique pourquoi vous recevez toujours cette erreur "La clé hôte du serveur n'est pas mise en cache dans le Registre". Oui, vous n'êtes jamais connecté au serveur en tant qu'utilisateur du service. Pour résoudre ce problème, vous devez manuellement rendre le service en cours d'exécution comme user.Do actuelle

    1. Run 'services.msc'
    2. Situer service
    3. 'Jenkins Slave'
    4. Propriété d'> Connectez-ON-> Choisissez utilisateur actuel.
Questions connexes