权限被拒绝(公钥,键盘交互)

时间:2010-06-11 11:07:23

标签: perl ssh cvs putty

权限被拒绝(publickey,键盘交互式)在我尝试从perl结帐时出现此错误。

什么是问题以及如何重新开始?

代码:

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

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

单独运行并使用ssh密钥

2 个答案:

答案 0 :(得分:1)

诊断错误的步骤:

  • 您使用的是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

答案 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");