git ls-remote在使用GIT_SSH时挂起

时间:2014-10-16 04:15:35

标签: git ubuntu github ssh

最近,当我部署到我的一台EC2服务器时,我开始看到很多超时。经过一些调查后,我将问题缩小到git ls-remoteGIT_SSH脚本。

这在100%的时间都有效:

eval `ssh-agent -s` && ssh-add key.pem && git ls-remote -h git@github.com:repo

这种情况占90%的时间:

GIT_SSH=wrapper.sh git ls-remote -h git@github.com:repo

仅在某些服务器上发生这种情况。我已经为许多项目使用了相同的包装器,并且从未遇到过问题。我刚刚设置Capistrano与forward_agent使用不同的包装器,它也失败了。

有什么建议吗?

P.S。包装器,为了完整起见:

#!/usr/bin/env bash
/usr/bin/env ssh -o "StrictHostKeyChecking=no" -i "/path/to/key.pem" $1 $2

p.p.s。 git的原始版本是1.9.1。更新到2.1.1没有帮助。

- 编辑 -

将-v添加到包装器脚本允许我找到罪魁祸首:

debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

似乎是一个错误:https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1254085

使用-c 3des-cbc指定密码似乎解决了自定义包装器的问题,但它并没有解决我对Capistrano的问题。

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。

要修复单个命令或脚本,请指定SSH使用的密码:

ssh -c 3des-cbc ...

要修复好的ssh,请通过编辑/etc/ssh/ssh_config指定要使用的密码。 取消注释:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

并添加:

HostKeyAlgorithms ssh-rsa,ssh-dss

根据https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1254085可能也可以通过修改MTU来修复,但我更喜欢编辑ssh配置。

------ ------ EDIT

虽然我最初通过更改密码来修复它,但确实证明了底层问题是MTU。尽管上述解决方案解决了SSH的问题,但许多SSL连接也受其影响。下面我提出一个解决方案,一劳永逸地解决所有问题。

将MTU设置为更低。以太网的默认值是1500,但我一直遇到问题,直到我将其降低到1468

sudo ip link set dev eth0 mtu 1468

如果以上解决了问题,请将以下两行添加到/etc/dhcp/dhclient.conf,以确保重启不会重置设置:

default interface-mtu 1468;
supercede interface-mtu 1468;