2014-03-06 3 views
9

Phabricator에 SSH를 설정하여 git을 실행하려고합니다. 나는이 manual을 따라 갔지만 echo {} | ssh [email protected] conduit conduit.ping을 호출하면 항상 빈 결과 또는 Permission denied (publickey,keyboard-interactive).이 표시됩니다.Phabricator에 대해 SSH로 힘내 구성

/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 

UPDATE :

  • 클라이언트에서 SSH 키를 사용하지 않았습니다.
  • 나는 git 사용자가 껍질을 가지고 있는지 확인하지 못했습니다.
+2

https://secure.phabricator.com/T4151의 정보 중 일부는 아직 주요 문서로 작성되지 않았지만 유용 할 수 있습니다. 특히,'git' 사용자가'/ etc/shadow'에'/ bin/false'가 아닌'/ bin/sh'와 같은 실제 셸과'NP '가 있는지 확인하십시오. –

+0

감사! 이것은 문서의 일부 여야합니다. – witrin

답변

2

gsh ssh 사용자가 정상 ssh 데몬으로 ssh 할 수 있는지 확인해야합니다.이 경우 ssh가 제대로 작동합니다. 그러면이 사용자로 로그인 할 수 있습니다.

댓글에 언급 된 것처럼 잘못된 홈 디렉토리 또는 나쁜 셸을 사용했을 가능성이 큽니다.

모두 정상적으로 작동하는 경우 프로필에 ssh 키가 업로드되어 있고이 키를 사용하여 연결하고 있는지 확인하십시오. 주의 할

3

그냥 다른 점은 경로가 AuthorizedKeysCommand에 대한 올바른 권한이 있어야합니다 아니면 내가 너무

Permission denied (publickey,keyboard-interactive) 

문제로 실행하고 다른 원인을 발견

Permission denied (publickey,keyboard-interactive) 
0

이도 발생할 수있다 SELinux는 아직 여기 언급되지 않았습니다.

서버에서 "적용"정책을 사용하여 SELinux를 사용하는 경우 동일한 문제가 발생할 수 있습니다. SELinux에 책임이있는 경우, 확인

$ setenforce 0 

를 설정하고 다시

$ echo {} | ssh [email protected] conduit conduit.ping 

을 시도합니다.

가 갑자기 작동하는 경우,하지만 당신은, 당신이 당신의 서버가 최근에 발생한 문제를 해결하기 위해 audit2allow를 사용할 수있는 영구적으로 SELinux를 사용하지 않도록 설정하거나 허용 모드로 실행하지 않으 :

$ ausearch -m avc -ts recent | audit2allow -M local 
$ semodule -i local.pp 

이를 ausearch는 SELinux 로그 (보통 /var/log/audit/audit.log)에서 최근 항목을 인쇄하고 audit2allow는 이 거부 된 항목에 대해으로 거부 된 정책을 작성합니다. 허용하지 않으려는 로그에 최근 항목이 없는지 확인하십시오.