我启动Ubuntu Linux,打开一个终端,编辑一些代码,并愉快地执行
git push origin master
然而,经过一段时间(有时30分钟,有时是几个小时),完全相同的命令将挂起(根本没有输出)。
当我尝试
时ssh -v git@github.com
我收到以下回复:
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来git了。任何想法如何解决这一问题?这让我不得不每次重启。
更新
当我从〜/ .ssh / config
删除以下两行(旨在促进连接共享)时,问题就消失了ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
答案 0 :(得分:2)
将我的评论从评论转变为答案......
ssh -v
输出中的最后一行:
debug1: auto-mux: Trying existing master
...告诉您SSH已配置为查找现有的SSH连接以供重用。我怀疑这个现有的连接最终会以某种方式卡住,这可以解释你所看到的行为。
the ssh_config(5)
man page的ControlMaster
部分介绍了此连接共享工具。本质上,“主”SSH会话在/tmp
中创建一个套接字,以后的会话可以连接到该套接字,而不必再次通过可能长度的身份验证步骤。您将此选项设置为auto
,这意味着将自动创建和使用此套接字。