Сконфигурируйте 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 создает политики для записей, помеченных как запрещенные. Убедитесь, что в журнале нет последних записей, которые вы не хотите разрешать.