Acho que o problema está no fato de você ter configurado um comando no arquivo authorized_keys
, mas a seção man sshd
no formato do arquivo authorized_keys diz claramente:
command="command"
Specifies that the command is executed whenever this key is used for authentication. The command supplied by the user (if any) is ignored. (…)
Isso significa que sempre que git-upload-pack
tentar entrar em contato com git-receive-pack
(por meio de um comando ssh
incluindo a chamada para git-receive-pack
, ele será esmagado em favor do comando especificado em .ssh/authorized_keys
.
git-shell
pode e aceita comunicações relacionadas ao git de entrada, mas como os parâmetros de git-upload-pack
foram esmagados para nulos, o primeiro está assumindo que alguém está tentando abrir um terminal comum e o interrompe. man git-shell
:
name
git-shell - Restricted login shell for Git-only SSH access
synopsis
git shell [-c ]
description
A login shell for SSH accounts to provide restricted Git access. When -c is given, the program executes non-interactively; can be one of git receive-pack, git upload-pack, git upload-archive, cvs server, or a command in COMMAND_DIR.(…)
Meu conselho seria (supondo que você não tenha feito isso) para criar uma conta de usuário separada para git
sozinho e fazer com que essa conta tenha as chaves públicas apropriadas em <git-home>/.ssh/authorized_keys
. Além disso, não se esqueça de remover o comando forçado da (s) chave (s) pública (s) em questão.
Além disso, recomendo que você configure a conta de usuário git
para usar git-shell
como shell padrão, modificando /etc/passwd
da seguinte forma:
From "git:*:1000:1000:git systems account:/home/git:/bin/sh" To "git:*:1000:1000:git systems account:/home/git:/usr/local/bin/git-shell"
Se git-shell
estiver instalado em algum lugar diferente de /usr/local/bin
, which git-shell
informará o caminho exato a seguir.
Espero que ajude; -)