Configurar Git con SSH para Phabricator

Intento configurar SSH para Phabricator para ejecutar git. He seguido este manual, pero cuando llamo echo {} | ssh git@phabricator.mydomain.com conduit conduit.ping echo {} | ssh git@phabricator.mydomain.com conduit conduit.ping Siempre obtengo un resultado vacío o Permission denied (publickey,keyboard-interactive). echo {} | ssh git@phabricator.mydomain.com conduit conduit.ping Permission denied (publickey,keyboard-interactive). .

/etc/ssh-phabricator/sshd_config :

 AuthorizedKeysCommand /usr/libexec/ssh-phabricator-hook AuthorizedKeysCommandUser git Port 22 Protocol 2 PermitRootLogin no AllowAgentForwarding no AllowTcpForwarding no PrintMotd no PrintLastLog no PasswordAuthentication no AuthorizedKeysFile none 

/etc/passwd :

 phd:x:999:999::/var/tmp/phd:/bin/false git:x:1005:1005::/home/git:/bin/bash 

/etc/shadow :

 phd:!:16135:::::: git:NP:16135:0:99999:7::: 

/etc/sudoers :

 git ALL=(phd) SETENV: NOPASSWD: /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /bin/false 

~/.ssh/config :

 Host phabricator.mydomain.com HostName phabricator.mydomain.com Port 22 IdentityFile /c/Users/.../.ssh/id_rsa_phabricator PrefernetworkingAuthentications publickey User git 

ACTUALIZAR

Las razones de mis problemas fueron:

  • No usé la key SSH con el cliente.
  • No me aseguré de que el usuario de git tenga un caparazón.

Su gancho ssh funciona correctamente: en primer lugar, debe asegurarse de que el usuario de git ssh pueda enviar ssh al daemon ssh normal, lo que garantizará que pueda iniciar session con este usuario.

Es más que probable que tenga un directory de inicio incorrecto o un shell incorrecto como se indica en los comentarios.

Si todo eso funciona bien, asegúrese de tener una key ssh cargada en su perfil y de que está usando esta key para conectarse.

Otra cosa a tener en count es que la ruta debe tener los permissions correctos para AuthorizedKeysCommand o esto también podría resultar en

 Permission denied (publickey,keyboard-interactive) 

Corrí hacia el

 Permission denied (publickey,keyboard-interactive) 

problema también y encontró otra causa que aún no se menciona aquí: SELinux.

Si usa SELinux con la política "Enforcing" en su server, puede tener los mismos problemas. Para verificar si SELinux es responsable, configure

 $ setenforce 0 

y testing

 $ echo {} | ssh git@phabricator.mydomain.com conduit conduit.ping 

de nuevo.

Si de repente funciona, pero no desea deshabilitar permanentemente SELinux o ejecutarlo en modo permisivo, puede usar audit2allow para resolver los problemas que su server encontró recientemente:

 $ ausearch -m avc -ts recent | audit2allow -M local $ semodule -i local.pp 

Este ausearch imprime las inputs recientes del logging de SELinux (generalmente /var/log/audit/audit.log) y audit2allow crea políticas para las inputs que están marcadas como denegadas . Asegúrese de que no haya inputs recientes en el logging que no desea permitir.