权限被拒绝(公钥,键盘交互)
问题描述:
权限被拒绝(公钥,键盘交互)得到这个错误,而我想从CVS CVS结帐。权限被拒绝(公钥,键盘交互)
什么是问题和如何reslove这?
代码:
system ("CSVROOT:--- CVSRSH:--- cvs co a ");
# i have proper value in cvs root and cvs rsh .
其单独运行,并使用SSH密钥
答
步骤来诊断错误:
- 您是否使用了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
答
跟进调查的问题:
是否该命令正常运行在
/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");
也许这个问题应该去serverfault.com? – pakore 2010-06-11 11:14:17