11

在远程服务器上运行 Fabric 任务时,我得到以下堆栈跟踪:

[x.x.x.x] run: git fetch && git reset --hard origin/develop
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "/var/lib/jenkins/jobs/deploy/workspace/.pyenv/lib/python2.6/site-packages/ssh/agent.py", line 115, in run
    self._communicate()
  File "/var/lib/jenkins/jobs/deploy/workspace/.pyenv/lib/python2.6/site-packages/ssh/agent.py", line 125, in _communicate
    events = select([self._agent._conn, self.__inr], [], [], 0.5)
TypeError: argument must be an int, or have a fileno() method.

Fabric 任务正在尝试执行git fetch并且在ssh/agent.py中引发异常的事实让我认为 SSH 身份验证有问题。

同一用户可以在 Fabric 之外运行git fetch ,并且该任务在我的笔记本电脑上运行良好。

这里发生了什么?我该如何解决这个问题?

4

3 回答 3

17

Fabric 的问题跟踪器上提出的一个问题提到该错误可能是由于主机上没有运行 ssh-agent 引起的。

我通过启动 ssh-agent 并添加用户密钥解决了这个问题:

$> eval `ssh-agent`
$> ssh-add ~/.ssh/id_rsa

成功!

于 2012-06-08T13:29:36.927 回答
0

要在您首次登录时自动启动 ssh-agent,请将其添加到您的~/.bashrc

if [ ! -S ~/.ssh/ssh_auth_sock ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
于 2015-07-20T16:45:38.623 回答
0

当我尝试在./manage.py shell_plus.

事实证明(对我来说)该错误是由于我的 shell_plus 设置为使用 bpython 而不是 ipython 造成的。

./manage.py shell_plus --ipython相反,当我跑步时,一切都运行良好。

我意识到这可能不是对您的问题的直接答案,但我想我不妨在这里为其他像我一样遇到此问题的人留个便条。

于 2016-12-14T23:51:13.937 回答