J'essaye de construire un service ssh pour permettre les repos push/pull vers le phabricator. J'ai dockerized tous les services, et je cours actuellement dans une erreur bizarre qui ne réussit pas à exécuter le script d'authentification requis pour ssh. L'image docker exécute les services php-fpm
et sshd
, avec l'idée d'unifier ssh avec les scripts php requis.sshd AuthorizedKeysCommand renvoie l'état 127
En particulier, je donne les résultats suivants/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
(comme une note de côté, PrintLastLog renvoie une erreur quand je commence sshd, que je ne pense pas est lié, mais peut-être ??)
Quand je lance manuellement
su - git -c "/srv/phabricator/scripts/ssh/ssh-auth.php git"
, je suis en mesure d'exécuter avec succès le script.
Cependant, quand j'examine les sshd
journaux lors de l'exécution en mode débogage (/usr/sbin/sshd -d -d -d
), je reçois l'erreur suivante:
...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
EDIT: It seems like
/usr/libexec/phabricator-ssh-hook.sh
actually does execute, but the script it executes/srv/phabricator/bin/ssh-auth
, presumably fails. That file (the phabricator directory) is actually on a host volume. I wonder if that could be the cause of thesestatus 127
issues.
J'ai lu que le statut 127 est renvoyé par/bin/sh lorsque la commande donnée est introuvable depuis PATH et qu'il ne s'agit pas d'une commande shell intégrée (ou qu'une bibliothèque ne peut pas être trouvée utilisée par le script). Cela étant dit, je suis capable d'exécuter le script manuellement, il semble donc peu probable que l'état 127 se réfère à cela.
Remarque ci-dessus, que je peux également exécuter en tant qu'utilisateur git
.
la version contenant docker info:
Linux version 4.11.9-1-ARCH ([email protected]) (gcc version 7.1.1 20170621 (GCC)) #1 SMP PREEMPT Wed Jul 5 18:23:08 CEST 2017
Toute aide dans la bonne direction serait appréciée.
EDIT
version 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 info
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
Publiez le Dockerfile, la version du docker et l'information du docker – user2915097
@ user2915097 mis à jour, bien que le Dockerfile soit plutôt volumineux, et je préfère ne pas le poster publiquement. –
https: //secure.phabricator.com/book/phabricator/article/diffusion_hosting/"Le script lui-même et le répertoire parent dans lequel se trouve le script doivent appartenir à root, et le script doit avoir 755 permissions Si vous ne le faites pas, sshd refusera d'exécuter le crochet." Avez-vous vérifié cela? – ephemient