편집하다
여기에 노출된 문제가 해결되었습니다(
.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
문제는 파일 및 디렉터리 권한이 요구 사항을 충족하지 않는다는 것입니다 . 이는 StrictModes
OpenSSH의 yes
기본값 이므로 변경해서는 안 됩니다. authorized_keys
권한 0600
과 .ssh
디렉터리 를 0700
.
# chmod 0700 .../.ssh/
# chmod 0600 .../.ssh/authorized_keys
...
설치에 따라 다를 수 있습니다(예를 들어 이 질문에서는 이지만 사용자 /var/git/
에게는 입니다 /home/username/
.
답변2
편집증적인 이유로 이 .ssh
디렉토리는 authorized_keys
그룹 쓰기가 불가능해야 합니다. 내 생각에는 사용자가 자신의 승인을 명시적으로 제어할 수 있는 유일한 사람이어야 한다는 생각이 듭니다. 저는 ACL이 이 문제를 해결할 수 있다고 믿습니다. 또 다른 해결책은 StrictModes=no
sshd의 구성 파일에서 설정하는 것입니다. 하지만 한 명의 사용자에게 이렇게 하는 것은 너무 위험합니다.
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