2010-06-11 214 views
0

权限被拒绝(公钥,键盘交互)得到这个错误,而我想从CVS CVS结帐。权限被拒绝(公钥,键盘交互)

什么是问题和如何reslove这?

代码:

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

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

其单独运行,并使用SSH密钥

+0

也许这个问题应该去serverfault.com? – pakore 2010-06-11 11:14:17

回答

1

步骤来诊断错误:

  • 您是否使用了SSH密钥?
  • 该密钥是否有密码?
  • 当你手工操作它时它工作吗?
  • 脚本是否以与手动运行时相同的用户身份运行?
  • 脚本是否在与手动运行时相同的环境下运行?如果你认为所有的答案都是肯定的(例如cron作业不相同的环境下运行)

,那么很有可能是最近的答案是真的没有。如果脚本正在从调度程序运行,如cron,它很可能不会在您手动运行时使用相同的环境运行。我通常解决这个问题的方法是使用调度和Perl脚本之间的shell脚本:查斯后

#!/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

所有问题的答案是YES – Tree 2010-06-11 11:23:52

1

跟进调查的问题:

  • 是否该命令正常运行在/bin/sh或其他一些shell? 要测试,执行/bin/sh命令来启动Bourne shell并再次手动尝试该命令。 我不熟悉“CVSROOT:---”符号 - 是否意味着设置CVSROOT环境变量?在Bourne shell中,通常使用“=”来完成,从未看到“:”被使用。

  • 手动运行的命令是否需要您输入一些信息?我从来没有见过cvs co这样做,但我不使用它与ssh。

  • 尝试将重定向添加到命令的末尾,看看有什么文件在运行后:

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

相关问题