sshd: 인증 거부됨: 디렉토리/data에 대한 소유권 또는 모드가 잘못되었습니다.

sshd: 인증 거부됨: 디렉토리/data에 대한 소유권 또는 모드가 잘못되었습니다.

루팅된 Android 휴대폰에 SSH로 연결하려고 하는데 오류가 발생하고 Permission denied (publickey).로그에 Authentication refused: bad ownership or modes for directory아래와 같이 권한과 소유권을 신중하고 올바르게 구성했음에도 불구하고 표시됩니다.

이것이 파일의 내용입니다 sshd_config.

  • /데이터/ssh/sshd_config
AuthorizedKeysFile /data/.ssh/authorized_keys
ChallengeResponseAuthentication no
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin yes
Subsystem sftp internal-sftp
pidfile /data/ssh/sshd.pid

이것이 파일의 내용입니다 99sshd.

  • /data/local/userinit.d/99sshd
#!/system/bin/sh

umask 077

# DEBUG=1

DSA_KEY=/data/ssh/ssh_host_dsa_key
DSA_PUB_KEY=/data/ssh/ssh_host_dsa_key.pub
RSA_KEY=/data/ssh/ssh_host_rsa_key
RSA_PUB_KEY=/data/ssh/ssh_host_rsa_key.pub
AUTHORIZED_KEYS=/data/.ssh/authorized_keys
DEFAULT_AUTHORIZED_KEYS=/data/.ssh/authorized_keys

if [ ! -f $DSA_KEY ]; then
    /system/bin/ssh-keygen -t dsa -f $DSA_KEY -N ""
    chmod 600 /$DSA_KEY
    chmod 644 $DSA_PUB_KEY
fi

if [ ! -f $RSA_KEY ]; then
    /system/bin/ssh-keygen -t rsa -f $RSA_KEY -N ""
    chmod 600 /$RSA_KEY
    chmod 644 $RSA_PUB_KEY
fi

if [[ ! -f $AUTHORIZED_KEYS && -f $DEFAULT_AUTHORIZED_KEYS ]]; then
    cat $DEFAULT_AUTHORIZED_KEYS > $AUTHORIZED_KEYS
fi


if [ "1" == "$DEBUG" ] ; then
    # run sshd in debug mode and capture output to logcat
    /system/bin/logwrapper /system/bin/sshd -f /data/ssh/sshd_config -D -d
else
    # don't daemonize - otherwise we can't stop the sshd service
    /system/bin/sshd -f /data/ssh/sshd_config -D
fi

또한 클라이언트 공개 키가 /data/.ssh/authorized_keys.

이제 관련 파일 및 디렉터리에 대한 권한과 소유권입니다.

# ls -alt /data/ssh
total 56
-rw-r--r--  1 root   root      6 2023-11-16 11:56 sshd.pid
-rw-rw----  1 root   root    269 2023-11-16 10:53 sshd_config
drwxrwx--x 54 system system 4096 2023-11-16 10:47 ..
drwxr-x---  3 root   shell  4096 2023-11-16 10:13 .
-rw-------  1 root   root    505 2023-11-16 10:11 ssh_host_ecdsa_key
-rw-r--r--  1 root   root    176 2023-11-16 10:11 ssh_host_ecdsa_key.pub
-rw-------  1 root   root    411 2023-11-16 10:11 ssh_host_ed25519_key
-rw-r--r--  1 root   root     96 2023-11-16 10:11 ssh_host_ed25519_key.pub
-rw-r--r--  1 root   root    604 2023-11-16 10:11 ssh_host_dsa_key.pub
-rw-------  1 root   root   1381 2023-11-16 10:11 ssh_host_dsa_key
-rw-r--r--  1 root   root    568 2023-11-16 10:11 ssh_host_rsa_key.pub
-rw-------  1 root   root   2602 2023-11-16 10:11 ssh_host_rsa_key
drw-------  2 root   shell  4096 1974-02-26 03:43 empty
# ls -alt /data/.ssh
total 16
drwxrwx--x 54 system system 4096 2023-11-16 10:47 ..
-rw-------  1 root   root   1144 2023-11-16 10:17 authorized_keys
drwx------  2 root   root   4096 2023-11-16 10:00 .
# ls -alt /data/local/userinit.d/99sshd
-rwxr-xr-x 1 root root 969 2023-11-16 10:54 /data/local/userinit.d/99sshd

이제 sshd 서버를 실행해 보세요.

# /data/local/userinit.d/99sshd

클라이언트 컴퓨터에서 평소처럼 전화에 연결을 시도합니다.

PS C:\Users\user> ssh [email protected]
[email protected]: Permission denied (publickey).

위에 표시된 오류로 인해 실패합니다.

그래서 휴대폰으로 로그를 확인해 보니 아래와 같습니다.

# logcat | grep -i ssh
11-16 11:56:28.394 10599 10599 I /system/bin/sshd: Authentication refused: bad ownership or modes for directory /data

하지만 위에 표시된 것처럼 관련 파일에 대한 권한이나 소유권 문제가 표시되지 않습니다.

참고로 저는 다음을 참고합니다.

전화번호는 다음과 같습니다:

  • ASUS ZenFone3 안드로이드 10

당신의 도움을 주셔서 감사합니다.

답변1

당신은 설정해야/데이터해당 하위 디렉터리는 권한 0755(rwxr-xr-x)를 가진 루트가 소유합니다. 또는 설정을 통해 이 권한 확인을 비활성화할 수 있습니다.엄격 모드"아니요"sshd_config휴대전화에 있는 파일.

오류 메시지는 특히 다음과 관련이 있습니다./데이터목차. 소스코드에 따르면,인증 키파일 sshd에서 파일의 절대 경로에 있는 모든 디렉터리가 사용자 또는 루트의 소유인지, 그룹 쓰기 가능 또는 누구나 쓰기 가능한 디렉터리가 없는지 확인합니다. 귀하의 경우에는 다음과 같습니다/데이터목차:

drwxrwx--x 54 system system 4096 2023-11-16 10:47 ..

즉, 그룹 쓰기 액세스가 활성화되고 (설명에서 변경할 때까지) 소유자와 그룹은 "시스템"입니다. 이 두 시나리오 모두 "루트"로 로그인을 시도하는 것은 허용되지 않습니다.

관련 정보