2010-06-11 47 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");