为Jenkins设置ssh以在运行时使用

为Jenkins设置ssh以在运行时使用,ssh,jenkins,Ssh,Jenkins,我需要一些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是一个GUI实

我需要一些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是一个GUI实用程序,我和Jenkins用户都无权访问它

我没有Jenkins用户的密码(或者Jenkins运行时的密码),因此无法登录并创建~/.ssh/id_dsa文件

怎么办


谢谢。

Ssh询问密码,可能是因为密钥无效,或者密钥受密码短语保护

通过自己运行相同的命令来尝试该键,以找出需要解决的问题

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


在非交互式生成作业中使用ssh命令时,可能应该使用选项
-o BatchMode=yes
。您可能还希望使用
-o StrictHostKeyChecking=no
,除非您可以以交互方式进行第一次登录并接受主机密钥。

不要尝试通过将命令放入“Execute Shell”字段来将ssh直接发送到远程计算机。
而是使用or。您不必为jenkins用户生成密钥。它将开箱即用。

我没有安装bin文件ssh askpass,因此没有这样的文件或目录。。。我需要安装它


Linux:sudo apt get install ssh askpass

这正是我所需要的。非常感谢。我在Jenkins作业中使用了以下命令行来执行这个shell命令:ssh-I/path/to/key/file-o BatchMode=yes-o strichostkeychecking=no the user@$SOMEHOST some_命令(主机名是参数化的)。在我的例子中,git服务器的标识由于某种原因而改变(是的,这很糟糕,但服务器是内部托管的,所以我认为我们的IT人员做了一些事情)。无论如何,我必须假设jenkins用户的身份,然后执行git命令。在这一点上,我可以告诉ssh接受远程服务器,一切都很好。