Настройте Git с помощью SSH для Phabricator

Я пытаюсь настроить SSH для Phabricator, чтобы запустить git. Я следовал этому руководству, но когда я вызываю echo {} | ssh [email protected] 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
    PreferredAuthentications publickey
    User git

ОБНОВЛЕНИЕ

Причинами моих проблем были:

  • Я не использовал ключ SSH с клиентом.
  • Я не гарантировал, что у пользователя git есть оболочка.

person witrin    schedule 06.03.2014    source источник
comment
Часть информации из secure.phabricator.com/T4151 еще не вошла в основную документацию. , но может быть полезно. В частности, убедитесь, что ваш пользователь git имеет NP (а не !!) и настоящую оболочку типа /bin/sh (не /bin/false) в /etc/shadow.   -  person Evan Priestley    schedule 07.03.2014
comment
Спасибо! Это должно быть частью документации.   -  person witrin    schedule 23.03.2014


Ответы (3)


Ваш хук ssh работает правильно — во-первых, вы должны убедиться, что пользователь git ssh может подключиться по ssh к обычному демону ssh — это гарантирует, что вы сможете войти в систему с этим пользователем.

Скорее всего, у вас плохой домашний каталог или оболочка, как указано в комментариях.

Если все это работает нормально, убедитесь, что в ваш профиль загружен ключ ssh и что вы используете этот ключ для подключения.

person Michael    schedule 18.03.2014

Еще одна вещь, которую следует отметить, это то, что путь должен иметь правильные разрешения для AuthorizedKeysCommand, иначе это также может привести к

Permission denied (publickey,keyboard-interactive)
person Alasdair    schedule 10.03.2015

я столкнулся с

Permission denied (publickey,keyboard-interactive)

тоже проблема и нашел еще одну причину, которая здесь еще не упоминается: SELinux.

Если вы используете SELinux с политикой Enforcing на своем сервере, вы можете столкнуться с теми же проблемами. Чтобы проверить, отвечает ли SELinux, установите

$ setenforce 0

и попытаться

$ echo {} | ssh [email protected] conduit conduit.ping

очередной раз.

Если он вдруг заработает, но вы не хотите постоянно отключать SELinux или запускать его в разрешительном режиме, вы можете использовать audit2allow для решения проблем, с которыми недавно столкнулся ваш сервер:

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

Этот ausearch печатает последние записи из журнала SELinux (обычно /var/log/audit/audit.log ), а audit2allow создает политики для записей, помеченных как запрещенные. Убедитесь, что в журнале нет недавних записей, которые вы не хотите разрешать.

person Ilendir    schedule 19.05.2016