2014-06-05 10 views
2

Je peux exécuter git pull en ligne de commande Linux avec succès sur mon VPS, mais quand j'exécute un fichier bash contenant "git pull" avec execFile dans Nodejs, il m'a donné une erreur: Command failed: Host key verification failed. Comment puis-je résoudre ce problème?Impossible d'exécuter la commande git dans nodejs

Mise à jour: Le tout message d'erreur que je reçois est:

{ [Error: Command failed: Host key verification failed. fatal: Could not read 
from remote repository. Please make sure you have the correct access rights 
and the repository exists. ] killed: false, code: 1, signal: null } 

Il semble que ce n'est pas le même problème avec les dylants question fournis.

Le fichier script bash est comme ça, je l'utilise pour auto déployer mon application nodejs:

git pull && pm2 reload www 

J'utilise le protocole SSH au lieu de protocole https sur mes vps afin d'éviter que le mot de passe invite chaque fois Je vais tirer de mon dépôt bitbucket. Donc, les clés ssh ont été générées dans mon répertoire utilisateur ~/.ssh /. Je pense que la raison pour laquelle nodejs n'a pas réussi à exécuter le fichier bash est la suivante: L'utilisateur qui exécute le fichier bash dans l'application nodejs est différent de l'utilisateur qui exécute le fichier bash en ligne de commande. l'utilisateur exécutant nodejs ne peut donc pas utiliser les clés ssh situées dans ~/.ssh pour la vérification. Est-ce correct? Comment le réparer?

+0

Y at-il plus à l'erreur que juste cela? Cela peut être lié: http://stackoverflow.com/questions/21087695/not-able-to-git-pull-host-key-verification-failed – dylants

+0

Pls ajouter à la question bash script de fichier. – bedna

Répondre

3

Je pense que vous avez correctement identifié le problème: l'application nodejs n'a pas accès à vos informations d'identification ssh. Vous avez quelques options disponibles:

  • Si vous pouvez rendre le dépôt disponible pour l'accès anonyme en lecture seule via http: // ou // git: protocoles, vous pouvez avoir les nodejs tirer des changements sans nécessiter aucune sorte des pouvoirs.

  • Vous pouvez générer une clé ssh pour l'utilisateur nodejs et accorder à cet utilisateur un accès en lecture seule au référentiel. Vous auriez juste besoin de générer une paire de clés ssh dans l'emplacement approprié pour cet utilisateur. Vous pouvez supprimer vos propres informations d'identification à l'endroit où votre application nodejs peut les utiliser, mais cela présente un certain nombre de problèmes de sécurité: si votre application Web est compromise, l'attaquant peut écrire des modifications dans votre référentiel qui sembleront venir de toi. Donc, n'utilisez pas cette option.

+0

Problème résolu. Mon application nodejs est en cours d'exécution par l'utilisateur root, j'ai généré une clé de déploiement pour cela (https://confluence.atlassian.com/display/BITBUCKET/Use+deployment+keys), maintenant tout va bien, merci. – treblam