5

Disconnecting from username@server... done.每当我发出 fab 命令时,Fabric会显示近 2 分钟,然后才会显示新的命令提示符。

使用向内部服务器和 Rackspace 云服务器发出的 Fabric 命令时存在此问题。下面我包含了来自服务器的 auth.log,但我在 MacBook 上的日志中没有看到任何内容。

关于问题是什么的任何想法?

服务器的 SSH auth.log 与 LogLevel VERBOSE

Apr 21 13:30:52 qsandbox01 sshd[19503]: Accepted password for mrankin from 10.10.100.106 port 52854 ssh2
Apr 21 13:30:52 qsandbox01 sshd[19503]: pam_unix(sshd:session): session opened for user mrankin by (uid=0)
Apr 21 13:30:52 qsandbox01 sudo:  mrankin : TTY=unknown ; PWD=/home/mrankin ; USER=root ; COMMAND=/bin/bash -l -c apache2ctl graceful
Apr 21 13:30:53 qsandbox01 sshd[19503]: pam_unix(sshd:session): session closed for user mrankin

服务器配置

  • 操作系统:Ubuntu 9.10 和 Ubuntu 6.10(用这些操作系统测试了 4 台服务器)
  • OpenSSH:Ubuntu 软件包版本 1.5.1p1-6ubuntu2

客户端配置

  • 操作系统:Mac OS X 10.6.3
  • 面料版本 0.9
  • 虚拟环境 1.4.7
  • 点子版本 0.7

用于测试的简单 fabfile.py

即使我只是fab -H server_ip host_type使用以下 fabfile 运行,问题仍然存在。

from fabric.api import run

def host_type():
    run('uname -s')

关于问题原因的思考

我不确定这个问题持续了多长时间,但以下是自从我开始注意到使用 Fabric 断开服务器连接速度慢以来发生的一些变化。

  1. 我使用 virtualenv 1.4.7、virtualenvwrapper 2.1 和 pip 0.7 重新创建了我的 virtualenv。不确定这是否相关,但这是一个想法,因为我从 virtualenv 中运行我的 fabfile。
  2. 我启用了 OS X 的防火墙。我禁用了 OS X 的防火墙,问题仍然存在,所以这不是问题。
4

2 回答 2

6

解决方案

在我的 virtualenv 中发出以下命令后,问题不再存在:

pip install -U paramiko

这安装了 paramiko-1.7.6 和 pycrypto-2.0.1。以前,我有 paramiko-1.7.4 和 pycrypto-2.0.1。

鉴于 pycrypto 版本没有改变,似乎 paramiko 是罪魁祸首至少 paramiko 1.7.4 和 Fabric 0.9 之间似乎存在交互,通过将 paramiko 升级到 1.7.6 来修复。

注意:我在一个 virtualenv 中升级到 paramiko-1.7.6 并确认问题消失了。然后我激活了另一个仍然有 paramiko-1.7.4 的 virtualenv,并确认问题仍然存在,确实如此。然后我将 paramiko 从 1.7.4 升级到 1.7.6,并确认该 virtualenv 中的问题也消失了。

于 2010-04-23T02:58:41.053 回答
2

感谢您在这里跟踪。我只想提醒任何读者,之前已知 Paramiko 1.7.4 可以与 Fabric 0.9 保持稳定,但在过去一两周内,有几个用户开始出现这个或类似的问题(断开连接超时),所以我猜一些其他组件(Python 升级,或远程服务器包升级,或其他)正在发挥作用,这会导致 1.7.4 中的错误。

我将查看 Paramiko 1.7.5/1.7.6 的变更日志并收集有关人们的平台/Python 版本/等的更多信息,以尝试查看是否出现了某种模式。

编辑:为这个问题新创建的 Redmine 票在这里:http ://code.fabfile.org/issues/show/158

于 2010-04-23T13:37:25.500 回答