2011-09-20 109 views
5

我启动Ubuntu Linux操作系统,打开一个终端,修改一些代码,并愉快地执行混帐推挂起后几个推

git push origin master 

然而,一段时间后(有时30分钟,有时几个小时),完全相同的命令将挂起(根本没有输出)。

当我尝试

ssh -v [email protected] 

我得到如下回应:

OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010 
debug1: Reading configuration data /home/avitus/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Applying options for * 
debug1: auto-mux: Trying existing master 

然后它再次挂起。看起来我已经不再使用SSH来连接到另一台服务器了。任何想法如何解决这一问题?每次都需要重新启动才会导致死机。

更新:

的问题消失了,当我删除以下两行(为了便于连接共享)从的〜/ .ssh/config中

ControlMaster auto 
ControlPath /tmp/ssh_mux_%h_%p_%r 
+0

你有没有在任何时候建立另一个SSH连接到GitHub作为控制主? (这是一种共享现有连接的机制。)该调试消息看起来像是发现了一个现有的SSH控制大师 –

+0

Mark - 我认为问题与您提到的一样,因为当我删除两行时,上面的所有内容开始工作再次。不过,我只有一个用户连接到这台机器上的Git。 – Andy

+0

太棒了,我很高兴听到你有这个工作。我现在已经添加了一个答案。 –

回答

2

刚刚从一个评论把我的猜测到答案...

ssh -v输出中的最后一行:

debug1: auto-mux: Trying existing master 

...告诉您SSH已配置为查找现有的SSH连接以重新使用。我怀疑这种现有的连接最终会以某种方式卡住,这将解释你所看到的行为。

此连接共享设施在the ssh_config(5) man pageControlMaster部分进行了说明。本质上,“主”SSH会话在/tmp中创建一个套接字,以后的会话可以连接到,而不必再次通过可能的长度认证步骤。你有这个选项设置为auto,这意味着这个套接字将被自动创建和使用。