SFTP nologin 사용자 공개 키 인증이 작동하지 않습니다.

SFTP nologin 사용자 공개 키 인증이 작동하지 않습니다.

사용자 구성입니다

cat /etc/passwd | grep sftp
sftpadmin:x:1001:1001::/backups:/sbin/nologin

생성된 디렉터리 구조

mkdir -p /backups/.ssh/
touch /backups/.ssh/authorized_keys
sudo chown sftpadmin:sftpusers/backups/.ssh
sudo chmod 700 /backups/.ssh
sudo chown sftpadmin:sftpusers /backups/.ssh/authorized_keys
sudo chmod 600 /backups/.ssh/authorized_keys

그런 다음 Authorized_keys 파일에 고객 공개 키를 추가했습니다.

그런 다음 이것을 시도했습니다.

sftp -v -oPort=22 -i /home/me/.ssh/id_rsa [email protected]

하지만 매번 비밀번호를 입력하라는 메시지가 표시됩니다. /var/log/secure비밀번호를 입력하지 않으면 수표에 아무것도 표시되지 않습니다.

홈 디렉터리가 있는 다른 사용자 계정과 동일한 RSA 키 쌍을 사용해 보았으며 이는 SSH 및 SFTP 공개 키 인증과 함께 작동합니다.

하지만 SFTP를 통해 연결하려고 할 때마다 sftpadmin비밀번호를 입력하라는 메시지가 표시됩니다. 서버가 공개 키 사용을 거부했습니다. 왜? 이 문제를 어떻게 해결하나요?

편집하다:

  • Centos 실행 2009년 7월 9일
  • OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 2017년 1월 26일
  • /etc/ssh/sshd_config 설정AuthorizedKeysFile .ssh/authorized_keys
  • /bin/bash쉘에 대해 SSH 할당 사용자를 다시 시작했지만 동일한 문제
  • selinux가 비활성화되었습니다
  • 방화벽이 비활성화되었습니다.

고쳐 쓰다: 효과가 있었습니다. IT는 다음의 조합입니다.

  • /etc/passwd 구성
  • Chroot 디렉터리 구성/etc/ssh/sshd_config
  • 권한

다음과 같이 수정했습니다.

  • 위에서 설명한 대로 /etc/passwd를 그대로 둡니다.
  • /etc/ssh/ssh_config를 편집하고 다음 내용을 구성합니다.
    Match Group sftpusers
    ChrootDirectory /backups/%u
    ForceCommand internal-sftp
    
  • 다음을 올바른 방식으로 생성하고 구성했는지 확인하세요.
    mkdir -p /backups/.ssh
    touch /backups/.ssh/authorized_keys
    chown root:sftpusers /backups
    chown -R sftpadmin:sftpusers /backups/.ssh
    chmod 755 /backups/
    chmod 600 -R /backups/.ssh
    

조합이 작동했습니다. 문제는 chroot 감옥의 소유권에 있습니다. 다른 사용자가 아닌 루트가 소유해야 합니다.

관련 정보