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
Comentários