我需要一些Jenkins作业才能通过ssh对其他一些机器进行shell命令行访问。
我该怎么做?
我没有目标服务器[s]的密码,但我有一个'密钥'文件,但当我运行以下作业时
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文件。
怎么办?
感谢。
答案 0 :(得分:13)
Ssh要求输入密码,因为密钥无效或密钥受密码保护。
通过自己运行相同的命令来尝试密钥,找出需要解决的问题。
如果密钥受密码短语保护,您应该删除密码短语,因为没有好办法在Jenkins作业中输入密码短语。您可以使用ssh-keygen -p -f /path/to/key/file
执行此操作。设置空密码短语以删除密码短语。
在非交互式构建作业中使用ssh命令时,应该使用选项-o BatchMode=yes
。您可能还想使用-o StrictHostKeyChecking=no
,除非您可以以交互方式进行首次登录并接受主机密钥。
答案 1 :(得分:2)
我没有安装bin文件ssh-askpass,所以没有这样的文件或目录......我需要安装它。
Linux:sudo apt-get install ssh-askpass
答案 2 :(得分:1)
不要尝试通过将命令放在“执行Shell”字段中直接ssh到远程计算机。 而是使用SSH plugin或Publish Over SSH plugin。您不必为jenkins用户生成密钥。它将开箱即用。