7

我需要一些 Jenkins 作业才能通过 ssh 对其他一些机器进行 shell 命令行访问。

我怎样才能做到这一点?

我没有目标服务器的密码,但我有一个“密钥”文件,但是当我使用以下内容运行作业时

ssh -i /path/to/key/file name@someserver some_command

作为 shell 命令,我得到以下信息:

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

ssh_askpass 是我和 Jenkins 用户都可以访问的 GUI 实用程序。

我没有 Jenkins 用户的密码(或任何 Jenkins 运行的密码),所以我无法登录并创建 ~/.ssh/id_dsa 文件。

该怎么办?

谢谢。

4

3 回答 3

14

SSH 要求输入密码,因为密钥无效或密钥受密码保护。

通过自己运行相同的命令来尝试密钥以找出您需要解决的问题。

如果密钥受密码保护,您可能应该删除密码,因为在 Jenkins 作业中没有输入密码的好方法。你可以用ssh-keygen -p -f /path/to/key/file. 设置一个空密码以删除密码。

在非交互式构建作业中使用 ssh 命令时,您可能应该使用 option -o BatchMode=yes。您可能还想使用-o StrictHostKeyChecking=no,除非您可以交互方式进行首次登录并接受主机密钥。

于 2012-04-07T20:40:50.393 回答
3

我没有安装bin文件ssh-askpass,所以没有这样的文件或目录...我需要安装它。

Linux:sudo apt-get install ssh-askpass

于 2016-12-07T01:30:52.433 回答
1

不要尝试通过将命令放在“执行 Shell”字段中直接 ssh 到远程计算机。而是使用SSH 插件Publish Over SSH 插件。您不必为 jenkins 用户生成密钥。它将开箱即用。

于 2012-12-12T06:10:32.143 回答