Сконфигурируйте Git с SSH для Phabricator

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

ОБНОВИТЬ

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

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

3 ответа

Решение

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

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

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

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

Permission denied (publickey,keyboard-interactive)

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

Permission denied (publickey,keyboard-interactive)

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

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

$ setenforce 0

и попробовать

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

снова.

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

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

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

Другие вопросы по тегам