yuipapps
@yuipapps (有坂 フミヤ)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ルート化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

よろしくお願いします。

0

1Answer

Comments

  1. @yuipapps

    Questioner

    以下のようになっておりました。

    # ls -alt /
    total 160
    drwxrwx--x  54 system system  4096 2023-11-16 10:47 data
    

    こちらでも色々試してみて、chmod o+r /dataをしてみたのですが

    # ls -alt /
    drwxrwxr-x  54 system system  4096 2023-11-16 10:47 data
    

    これでも当該の同じエラーが出る状況です。

    @jinbei230525 さん

  2. /dataのオーナーとグループをroot、パーミッションを700にして、sshを試すとうまくいきませんか?

  3. @yuipapps

    Questioner

    まだ試していませんが、chown root:root /dataをするということでしょうか。/dataはシステムに関わっているディレクトリのようですが、これのオーナーシップを変えてしまっても問題は起きないでしょうか。

    @jinbei230525 さん

  4. オーナーシップを変更して、問題が起きないかどうかは不明です。

  5. @yuipapps

    Questioner

    もう少し検証を続けてみます。最後の手段の一つとして/dataのオーナーシップ変更も試してみたいと思います。ご助力ありがとうございます。

    @jinbei230525 さん

  6. システムに影響のないテスト用のディレクトリを作成して、rootによるsshログインを試すところからしてみると良いかもしれませんね。

Your answer might help someone💌