2010-06-11 4 views
0

L'autorisation refusée (publickey, keyboard-interactive) a reçu cette erreur alors que j'essaie de récupérer la commande cvs depuis perl.Autorisation refusée (publickey, keyboard-interactive)

quel est le problème et comment reslove cela?

code:

system ("CSVROOT:--- CVSRSH:--- cvs co a "); 

# i have proper value in cvs root and cvs rsh . 

son seul et en cours d'exécution en utilisant ssh clé

+0

Peut-être que cette question devrait aller à serverfault.com? – pakore

Répondre

1

étapes pour diagnostiquer l'erreur:

  • Utilisez-vous une clé SSH?
  • Cette clé possède-t-elle une phrase secrète?
  • Cela fonctionne-t-il lorsque vous l'exécutez à la main?
  • Le script s'exécute-t-il sous le même utilisateur que lorsque vous l'exécutez à la main?
  • Le script s'exécute-t-il dans le même environnement que lorsque vous l'exécutez à la main? (par exemple cron les travaux ne s'exécutent pas dans le même environnement)

Si vous pensez que toutes les réponses sont oui, alors la dernière réponse est probablement non. Si le script s'exécute à partir d'un planificateur tel que cron, il ne s'exécute probablement pas dans le même environnement que lorsque vous l'exécutez à la main. La façon dont je résous normalement est d'utiliser un script shell entre le planificateur et le script Perl:

#!/bin/bash 

source /home/USERNAME/.profile 

#set any other environment variables it needs like 

export CSVROOT=:pserver:[email protected]:/path/to/repo 
export CVSRSH=ssh 

/path/to/perl/script/script.pl 
+0

toutes les questions réponse est OUI – Tree

1

enquêtes de suivi après Chas questions de:.

  • Est-ce qui commande normalement exécutent sous /bin/sh ou un autre shell? Pour tester, exécutez la commande /bin/sh pour lancer Bourne shell et réessayez la commande manuellement. Je ne connais pas la notation "CVSROOT: ---" - est-ce que cela a pour but de définir la variable d'environnement CVSROOT? Dans Bourne shell, c'est généralement fait en utilisant "=", jamais vu ":" utilisé.

  • Est-ce que la commande, lorsqu'elle est exécutée à la main, attend de votre part une réponse? Je n'ai jamais vu cvs co pour le faire, mais je ne l'utilise pas avec ssh.

  • Essayez d'ajouter une redirection vers la fin de la commande et regardez ce qui est dans le fichier après l'exécution:

    system ("CSVROOT:--- CVSRSH:--- cvs co a > /tmp/log_cmd 2>&1");

Questions connexes