sshd AuthorizedKeysCommand引发状态127

我正在尝试构build一个ssh服务来允许push / pull到phabricator回购。 我dockerized所有的服务,我目前遇到了一个奇怪的错误,无法执行必要的身份validation脚本的SSH。

docker镜像运行php-fpmsshd服务,把ssh和必要的php脚本联合起来。

特别是,我有以下/ etc / ssh / sshd_config:

 AuthorizedKeysCommand /usr/libexec/phabricator-ssh-hook.sh AuthorizedKeysCommandUser git AllowUsers git Port 2222 Protocol 2 PermitRootLogin no AllowAgentForwarding no AllowTcpForwarding no PrintMotd no #PrintLastLog no PasswordAuthentication no ChallengeResponseAuthentication no AuthorizedKeysFile none PidFile /var/run/sshd-phabricator.pid 

(作为一个方面,PrintLastLog抛出一个错误,当我启动sshd,我不认为是相关的,但可能是??)

当我手动运行

su - git -c "/srv/phabricator/scripts/ssh/ssh-auth.php git" ,我能够成功执行脚本。

但是,当我在debugging模式( /usr/sbin/sshd -d -d -d )下运行时检查sshd日志时,出现以下错误:

 ...other stuff... debug3: monitor_read: checking request 22 debug3: mm_answer_keyallowed entering debug3: mm_answer_keyallowed: key_from_blob: 0x5564c1f473c0 debug3: subprocess: AuthorizedKeysCommand command "/usr/libexec/phabricator-ssh-hook.sh git" running as git debug1: temporarily_use_uid: 1000/1000 (e=0/0) debug1: restore_uid: 0/0 debug3: subprocess: AuthorizedKeysCommand pid 885 debug1: temporarily_use_uid: 1000/1000 (e=0/0) debug2: key not found AuthorizedKeysCommand /usr/libexec/phabricator-ssh-hook.sh git failed, status 127 debug1: restore_uid: 0/0 Failed publickey for git from some.ip.address.here port 58378 ssh2: ED25519 SHA256:GBGS4ag9s8msV3XsuojlIoqATF63tvXU3t5GIUN0eYY debug3: mm_answer_keyallowed: key 0x5564c1f473c0 is not allowed debug3: mm_request_send entering: type 23 debug2: userauth_pubkey: authenticated 0 pkalg ssh-ed25519 [preauth] debug3: userauth_finish: failure partial=0 next methods="publickey" [preauth] debug3: send packet: type 51 [preauth] Connection closed by 24.5.151.66 port 58378 [preauth] debug1: do_cleanup [preauth] debug1: monitor_read_log: child log fd closed debug3: mm_request_receive entering debug1: do_cleanup debug1: Killing privsep child 884 

编辑:看起来像/usr/libexec/phabricator-ssh-hook.sh实际上执行,但它执行的脚本/srv/phabricator/bin/ssh-auth ,可能会失败。 该文件(phabricator目录)实际上在主机卷上。 我想知道这是否是这些问题的原因。

我已经读过,当PATH找不到给定的命令时,状态127是由/ bin / sh返回的,并且它不是一个内置shell命令(或者脚本没有find一个库)。

这就是说,我能够手动执行脚本,所以127状态似乎不太可能引用这个。

注意上面,我也可以作为git用户执行。

docker集装箱版本信息:

Linux version 4.11.9-1-ARCH (builduser@tobias) (gcc version 7.1.1 20170621 (GCC) ) #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017

任何帮助正确的方向将不胜感激。

编辑

docker版本

 Client: Version: 17.06.0-ce API version: 1.30 Go version: go1.8.3 Git commit: 3dfb8343 Built: Wed Jul 26 18:03:33 2017 OS/Arch: linux/amd64 Server: Version: 17.06.0-ce API version: 1.30 (minimum version 1.12) Go version: go1.8.3 Git commit: 02c1d87617 Built: Wed Jul 26 20:03:39 2017 OS/Arch: linux/amd64 Experimental: false 

docker信息

 Containers: 10 Running: 10 Paused: 0 Stopped: 0 Images: 147 Server Version: 17.06.0-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4 init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 4.11.9-1-ARCH Operating System: Arch Linux OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 7.631GiB Name: <host-name> ID: KYNR:4YHS:T4C2:URUY:GIB5:KCNF:DCNC:JLUT:DYO3:D5P7:VVOD:C2YV Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false