인증 거부됨: /var/git/.ssh/authorized_keys 파일에 대한 소유권 또는 모드가 잘못되었습니다.

인증 거부됨: /var/git/.ssh/authorized_keys 파일에 대한 소유권 또는 모드가 잘못되었습니다.

편집하다

여기에 노출된 문제가 해결되었습니다( .ssh폴더의 파일 모드 관련).

하지만 또 다른 문제가 여전히 존재하여 새로운 질문을 만들었습니다. >SSH-RSA 키를 사용하여 로그인할 수 없습니다

더 이상 특정 사용자의 ssh-rsa 키를 사용하여 연결할 수 없지만 다른 사용자에게는 여전히 작동합니다.

사용자 git정의는 다음과 같습니다.

# cat /etc/passwd | grep git
git:x:1002:1002:,,,:/var/git:/bin/bash

따라서 이것이 git 사용자라는 것을 알 수 있으므로 홈은 /var/git가 아니라 입니다 /home.

이제 ssh는 항상 비밀번호를 묻는 메시지를 표시합니다.

$ ssh git@srv
git@srv's password:

로그를 확인했습니다.

# tail -n 1 /var/log/auth.log
[...] Authentication refused: bad ownership or modes for file /var/git/.ssh/authorized_keys

authorized_keys일부 소유권 또는 스키마 구성 오류 로 인해 발생합니다 . 이것이 파일의 conf이기 때문에 이해가 안됩니다.

# ls -l /var/git/.ssh/ | grep auth
-rw-rw-r-- 1 git git 394 mai   22 17:39 authorized_keys

다음은 (만약에 대비해...) 상위 .ssh디렉토리입니다:

# ls -al /var/git/ | grep ssh
drwxrwxr-x  2 git  git  4096 mai   22 17:39 .ssh

$HOME디렉토리:

# ls -l /var/ | grep git
drwxr-xr-x  7 git  git    4096 mai   27 10:49 git

따라서 소유자는 항상 git소유자 그룹과 같습니다. 파일을 읽을 수 있는데 비결은 무엇입니까?

답변1

문제는 파일 및 디렉터리 권한이 요구 사항을 충족하지 않는다는 것입니다 . 이는 StrictModesOpenSSH의 yes기본값 이므로 변경해서는 안 됩니다. authorized_keys권한 0600.ssh디렉터리 를 0700.

# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys

...설치에 따라 다를 수 있습니다(예를 들어 이 질문에서는 이지만 사용자 /var/git/에게는 입니다 /home/username/.

답변2

편집증적인 이유로 이 .ssh디렉토리는 authorized_keys그룹 쓰기가 불가능해야 합니다. 내 생각에는 사용자가 자신의 승인을 명시적으로 제어할 수 있는 유일한 사람이어야 한다는 생각이 듭니다. 저는 ACL이 이 문제를 해결할 수 있다고 믿습니다. 또 다른 해결책은 StrictModes=nosshd의 구성 파일에서 설정하는 것입니다. 하지만 한 명의 사용자에게 이렇게 하는 것은 너무 위험합니다.

PS 귀하의 ls -l /var | grep git접근 방식이 더 간결합니다ls -ld /var/git

답변3

디렉토리 $HOME/.ssh모드~ 해야 하다700이고authorized_keys ~해야 한다소유자만 읽을 수 있음(예: 모드 600):

chmod u=rwx,g=,o= /var/git/.ssh
chmod u=rw,g=,o= /var/git/.ssh/authorized_keys

개인키의 경우,~ 해야 하다소유자만 읽고 쓸 수 있습니다.

chmod u=rw,g=,o= /var/git/.ssh/id_?sa

관련 정보