使用SSH为Phabricator配置Git

时间:2014-03-06 21:41:12

标签: git ssh phabricator

我正在尝试为Phabricator配置SSH以使git运行。我已经按照manual进行了操作,但是当我致电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用户有shell。

3 个答案:

答案 0 :(得分:3)

另外需要注意的是路径必须具有AuthorizedKeysCommand的正确权限,否则也可能导致

Permission denied (publickey,keyboard-interactive)

答案 1 :(得分:2)

你的ssh钩子工作正常 - 首先,你应该确保git ssh用户能够ssh到正常的ssh守护进程 - 这将确保你可以使用这个用户登录。

很可能你有一个错误的主目录或错误的shell,如评论中所述。

如果所有这些工作正常,请确保您已将ssh密钥上传到您的个人资料,并且您正在使用此密钥进行连接。

答案 2 :(得分:0)

我遇到了

Permission denied (publickey,keyboard-interactive)

问题也发现了另一个原因:SELinux。

如果在服务器上使用SELinux并执行“强制”策略,则可能会遇到同样的问题。要检查SELinux是否负责,请设置

$ setenforce 0

并尝试

$ echo {} | ssh git@phabricator.mydomain.com 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为标记为拒绝的条目创建策略。 确保日志中没有您不想允许的最新条目。