【发布时间】: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 但是我已经在 Jenkins 服务器中创建了公钥并将其添加到生产服务器中。还是你的意思是其他方式?
-
你的ssh服务器配置正确了吗?可以不用密码登录你的服务器吗?
-
@GeminiKeith 是的,如果我使用 ssh user@myserveraddress,那么我无需密码即可连接并登录。那是到生产服务器的连接,我是否也需要与gitlab服务器的无密码连接?
-
根据你的帖子实际上是行不通的。您是否已经配置了使用公钥登录 SSH 服务器的全局凭据?