ルート化AndroidへのSSH接続でAuthentication refused: bad ownership or modes for directoryエラーが出ます
Android端末にSSH接続しようとしていますが、Permission denied (publickey)
というエラーが発生しており、ログにはAuthentication refused: bad ownership or modes for directory
と表示されています。以下が関連する設定とファイルの内容です。
1. sshd_config
ファイルの内容
/data/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
2. 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
/system/bin/logwrapper /system/bin/sshd -f /data/ssh/sshd_config -D -d
else
/system/bin/sshd -f /data/ssh/sshd_config -D
fi
3. ファイル・ディレクトリのパーミッションと所有者
/data/ssh
# 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
-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
/data/.ssh
# ls -alt /data/.ssh
total 16
-rw------- 1 root root 1144 2023-11-16 10:17 authorized_keys
drwx------ 2 root root 4096 2023-11-16 10:00 .
/data/local/userinit.d/99sshd
# ls -alt /data/local/userinit.d/99sshd
-rwxr-xr-x 1 root root 969 2023-11-16 10:54 /data/local/userinit.d/99sshd
エラーとログ
SSHクライアントから接続を試みると、以下のエラーが発生します。
PS C:\Users\user> ssh root@192.168.4.159
root@192.168.4.159: 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
質問
上記の設定やログを確認しましたが、関連するファイルのパーミッションや所有者に問題がないように見えます。何が原因で Authentication refused: bad ownership or modes for directory /data
エラーが発生しているか、解決方法を教えていただけないでしょうか?
参考:
端末情報:
- ASUS ZenFone3 Android 10
よろしくお願いします。