我正在尝试为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
更新
我遇到问题的原因是:
git
用户有shell。答案 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为标记为拒绝的条目创建策略。 确保日志中没有您不想允许的最新条目。