No meu caso, eu estava usando uma pasta git com direitos inválidos armazenados na mesma unidade de um repo, mas poderia ser o mesmo com ssh mesmo se você usar um usuário de login autorizado.
Verifique se você tem os direitos corretos para escrever no repositório distante.
Exemplo:
Init repo local e distante
git init /tmp/src
git init --bare /tmp/dst
cd /tmp/src
Adicionando repositório remoto à origem
src > git remote add dest /tmp/dst
Simulando problema
src > chmod -R 555 /tmp/dst
Adicionando arquivo falso e empurrando-o
src > touch a && git add a && git commit -m 'demo'
src > git push --set-upstream dest master
src > git push
Counting objects: 3, done.
Writing objects: 99% (2/3), 202 bytes | 0 bytes/s.
Git trava
Solução
src > chmod -R 775 /tmp/dst