权限被拒绝(publickey,键盘交互式)在我尝试从perl结帐时出现此错误。
什么是问题以及如何重新开始?
代码:
system ( "CSVROOT:--- CVSRSH:--- cvs co a ");
# i have proper value in cvs root and cvs rsh .
单独运行并使用ssh密钥
答案 0 :(得分:1)
诊断错误的步骤:
cron
作业不在同一环境下运行)如果您认为所有答案都是肯定的,那么最后答案很可能就是答案。如果脚本从cron
之类的调度程序运行,则它很可能不会像您手动运行时那样运行。我通常解决这个问题的方法是在调度程序和Perl脚本之间使用shell脚本:
#!/bin/bash
source /home/USERNAME/.profile
#set any other environment variables it needs like
export CSVROOT=:pserver:USERNAME@HOST:/path/to/repo
export CVSRSH=ssh
/path/to/perl/script/script.pl
答案 1 :(得分:1)
Chas。问题之后的后续调查:
该命令通常在/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");