Para corrigir comandos GIT de push e pull lentos, quando estamos usando chaves ssh nos serviços de repositórios Github, Gitlab e Bitbucket, é necessário alterar a configuração de versão de IP utilizada.

Eu gosto de usar as conexões por HTTPS dos serviços de versionamento e repositório de códigos fonte, principalmente pela praticidade de usar os serviços em qualquer máquina sem a necessidade de criar chaves SSH para a conexão GIT.

Porém, principalmente depois de Github e Bitbucket obrigarem a interação com seus repositórios por meio de chaves ssh, em alguns momentos a velocidade de conexão virou um problema.

Nos últimos dias, experimentei conexões muito lentas ao enviar novos commits por push para o Bitbucket, principalmente, via linha de comando shell, SourceTree ou mesmo PHPStorm.

O envio de um commit com apenas um arquivo alterado estava levando 50 segundos, ou até mais, cerca de 3 minutos em alguns casos.

Depois de depurar a conexão ssh em um comando de git push, o resultado foi algo similar com o apresentado a seguir:

ssh -Tv [email protected] [...] debug1: Connecting to bitbucket.org [2401:1d80:1010::152] port 22. debug1: connect to address 2401:1d80:1010::152 port 22: Operation timed out debug1: Connecting to bitbucket.org [104.192.143.2] port 22. debug1: Connection established. [...]

Se você não está calejado com os problemas de IPv6, não saltou aos seus olhos como saltou aos meus, o problema: minha instalação git está tentando usar IPv6 ao invés de IPv4 para as conexões de transferências de dados.

Corrigindo GIT lento com SSH no Github e outros serviços

Como já afirmei no parágrafo anterior, a conexão SSH via IPV6 está levando a conexão ao um tempo limite, atingindo o timeout.

Apenas após este timeout que, em seguida, IPV4 é usado. Isso estava acontecendo a cada git commit, git pull ou git push.

Como uma solução rápida - diria definitiva, decidi desligar o IPV6 para conexões SSH.

Para realizar isso, você deve abrir o arquivo /etc/ssh/sshd_config em seu Linux Ubuntu ou Mint, e adicionar as linhas a seguir:

Host *
  AddressFamily inet

Após reiniciar a sessão, suas conexões ssh utilizarão IPv4 por padrão e a lentidão será resolvida.

Caso deseje desabilitar o uso de IPv6 nas conexões ssh em apenas alguns servidores ou serviços específicos, especifique o host como no exemplo a seguir:

Host bitbucket.org
  AddressFamily inet

Na configuração acima eu desabilitei o IPv6 em ssh apenas para os servidores do Bitbucket.

Você pode fazer o mesmo para os servidores do Github ou Gitlab. Ou ainda, para qualquer outro serviço que acesso via ssh.

Referências

Post: https://grosse.io/blog/posts/Fixing-slow-Bitbucket-git-connections-via-SSH