2012-04-07 79 views
4

我需要一些Jenkins作業來通過ssh使shell命令行訪問某些其他機器。爲Jenkins設置ssh以便在運行時使用

我該怎麼做?

我沒有目標服務器[S]的密碼,但我有一個「關鍵」的文件,但是當我運行作業具有以下

ssh -i /path/to/key/file [email protected] some_command 

的shell命令,我得到如下:

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory 

ssh_askpass是一個GUI工具,我也沒有Jenkins用戶可以訪問。

我沒有Jenkins用戶(或任何Jenkins運行的密碼)的密碼,所以我無法登錄並創建〜/ .ssh/id_dsa文件。

怎麼辦?

謝謝。

回答

10

Ssh要求輸入密碼,因爲密鑰無效或密鑰受密碼保護。

通過自己運行相同的命令來試着找出你需要解決的問題。

如果密鑰受密碼保護,您應該刪除密碼,因爲在Jenkins作業中沒有好方法輸入密碼。你可以用ssh-keygen -p -f /path/to/key/file來完成。設置一個空的密碼以刪除密碼。

在非交互式構建作業中使用ssh命令時,應該使用選項-o BatchMode=yes。您可能還想使用-o StrictHostKeyChecking=no,除非您可以交互地執行第一次登錄並接受主機密鑰。

+0

這正是我所需要的。謝謝。我在Jenkins作業中使用了以下命令行來執行此shell命令:ssh -i/path/to/key/file -o BatchMode = yes -o StrictHostKeyChecking = no theuser @ $ SOMEHOST some_command(主機名被參數化) – 2012-04-08 04:39:45

+0

在我的情況下,由於某種原因,git服務器的身份發生了變化(是的,這很糟糕,但服務器是在內部託管的,所以我假設我們的IT人員做了一些事情)。 ANYCASE,我必須假設jenkins用戶的身份,並執行git命令。那時我可以告訴ssh接受遠程服務器,一切都很好。 – demaniak 2016-03-01 11:20:48

1

不要試圖通過將命令放入「Execute Shell」字段直接ssh直接進入遠程機器。 改爲使用SSH pluginPublish Over SSH plugin。您不必爲jenkins用戶生成密鑰。它會開箱即用。

1

我還沒有安裝bin文件ssh-askpass,所以沒有這樣的文件或目錄......我需要安裝它。

Linux:sudo apt-get install ssh-askpass

相關問題