权限被拒绝(publickey,keyboard-interactive)在我尝试从 perl 进行 cvs 结帐时收到此错误。
什么是问题以及如何解决这个问题?
代码 :
system ( "CSVROOT:--- CVSRSH:--- cvs co a ");
# i have proper value in cvs root and cvs rsh .
它单独运行并使用 ssh 密钥
诊断错误的步骤:
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
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");