【问题标题】:jenkins shell throws inappropriate ioctl for devicejenkins shell 为设备抛出不适当的 ioctl
【发布时间】:2017-07-17 12:39:57
【问题描述】:

我正在尝试使用命令“cap production deploy”从 jenkins shell 部署 ruby​​,但它会引发错误:

deploy@10.105.27.132 的密​​码:(回溯仅限于导入的任务) 帽子流产了! SSHKit::Runner::ExecuteError: 以 deploy@10.105.27.132 执行时出现异常:设备的 ioctl 不合适 Errno::ENOTTY: 设备的 ioctl 不合适

如果我从终端手动执行命令,它会毫无问题地执行。 我已经设置了公钥,这样我就可以在不需要输入密码的情况下执行命令,并且还在 GitLab 中添加了部署密钥。

当我搜索答案时,我发现在大多数情况下,问题出在部署密钥上,但我已将其添加到项目中,并且可以从终端手动执行命令,因此问题一定出在 Jenkins shell 中. 似乎它可能使用了对终端的一些解释,而不是真实的东西。

有什么办法可以解决这个问题,以便我可以从 Jenkins shell 执行命令?

【问题讨论】:

  • 似乎没有设备绑定到连接,因为它是一个没有交互的纯命令。唯一的方法应该是公钥。
  • @GeminiKeith 但是我已经在 J​​enkins 服务器中创建了公钥并将其添加到生产服务器中。还是你的意思是其他方式?
  • 你的ssh服务器配置正确了吗?可以不用密码登录你的服务器吗?
  • @GeminiKeith 是的,如果我使用 ssh user@myserveraddress,那么我无需密码即可连接并登录。那是到生产服务器的连接,我是否也需要与gitlab服务器的无密码连接?
  • 根据你的帖子实际上是行不通的。您是否已经配置了使用公钥登录 SSH 服务器的全局凭据?

标签: ruby shell jenkins


【解决方案1】:

我解决了这个问题。我以 Jenkins 用户身份登录了 jenkins 服务器,并与他一起创建了公钥并将其上传到生产服务器。之后一切正常。我在任何地方都没有看到 Jenkins 有自己的用户并且我必须与该用户创建公钥。

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 2014-09-17
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多