Alpineってユーザーにパスワードつけないと鍵認証できないってマジか。詳しい人教えて👀
— adachin👾SRE (@adachin0817) June 15, 2020
というわけで、Alpine Linuxでパスワードなしのユーザーで鍵認証すると Permission denied (publickey,keyboard-interactive).
と言われるので、もろもろチーム内で調査をしてみました。
■事象
- /etc/ssh/sshd_config
1 2 |
PubkeyAuthentication yes PasswordAuthentication no |
- add user
1 |
# adduser -D adachin |
- ssh login(no pass)
1 2 |
$ ssh hoge-server Permission denied (publickey,keyboard-interactive). |
- ssh login(setting pass)
1 2 3 4 5 6 7 8 |
$ ssh hoge-server Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See <http://wiki.alpinelinux.org>. You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. adachin@hoge-server:~$ |
上記のようにパスワードを設定すると何故か鍵認証が可能になる。
■パスワードを設定していないユーザで ssh ログインしようとすると公開鍵認証でもログインに失敗する
https://tkuchiki.hatenablog.com/entry/2013/05/27/211051
Linux だと、/etc/shadow の USERNAME:の次に「!!」と書いて有る場合は lockされているっぽい(FreeBSD だと 「*LOCKED*」)。
確かに、/etc/shadow に !! と書いてあった。
パスワードを設定したら、!! が ランダム文字列に置き換わっていた。
とのことなので新しくユーザーを作成して確認してみると!!確かにlockされていることがわかりました。
1 2 3 |
# adduser -D hoge # grep hoge /etc/shadow hoge:!:18429:0:99999:7::: |
■じゃあどうしたらいいわけ!?
debianでは --disabled-password
というオプションを指定すればロック状態にはならないのですが、Alpineだとこのオプションではロックがかかったままとなっていました。ちなみに以下のようにAlpineだとBusyBoxのコマンドで成り立っています。
- Alpine Linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ ls -l /bin/ total 1868 lrwxrwxrwx 1 root root 12 Jun 24 2016 ash -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 base64 -> /bin/busybox -rwxr-xr-x 1 root root 682128 Jan 24 2017 bash -r-xr-xr-x 1 root root 6866 Jan 24 2017 bashbug lrwxrwxrwx 1 root root 12 Jun 24 2016 bbconfig -> /bin/busybox -rwxr-xr-x 1 root root 805032 Nov 23 2017 busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 cat -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 catv -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 chgrp -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 chmod -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 chown -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 conspy -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 cp -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 cpio -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 date -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 dd -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 df -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 dmesg -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 dnsdomainname -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 dumpkmap -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 echo -> /bin/busybox lrwxrwxrwx 1 root root 12 Jun 24 2016 ed -> /bin/busybox ~省略~ |
逆にdebianはbusyboxではなかったので、同じ adduser
コマンドでもバイナリが違うということになりますので気をつけましょう。
- debian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ ls -l /bin/ total 15004 -rwxr-xr-x 1 root root 1168776 Apr 18 2019 bash -rwxr-xr-x 3 root root 38984 Jul 10 2019 bunzip2 -rwxr-xr-x 3 root root 38984 Jul 10 2019 bzcat lrwxrwxrwx 1 root root 6 Jul 10 2019 bzcmp -> bzdiff -rwxr-xr-x 1 root root 2227 Jul 10 2019 bzdiff lrwxrwxrwx 1 root root 6 Jul 10 2019 bzegrep -> bzgrep -rwxr-xr-x 1 root root 4877 Jun 24 2019 bzexe lrwxrwxrwx 1 root root 6 Jul 10 2019 bzfgrep -> bzgrep -rwxr-xr-x 1 root root 3641 Jul 10 2019 bzgrep -rwxr-xr-x 3 root root 38984 Jul 10 2019 bzip2 -rwxr-xr-x 1 root root 14328 Jul 10 2019 bzip2recover lrwxrwxrwx 1 root root 6 Jul 10 2019 bzless -> bzmore -rwxr-xr-x 1 root root 1297 Jul 10 2019 bzmore -rwxr-xr-x 1 root root 43744 Feb 28 2019 cat ~省略~ |
なので、そもそもロックを解除すればいいわけで、以下のように passwd
コマンドで指定してあげれば、パスワードなしでも鍵認証が可能となります。
1 2 3 4 5 6 7 |
# grep hoge /etc/shadow hoge:!:18429:0:99999:7::: # passwd -u hoge Password for hoge changed by root # grep hoge /etc/shadow hoge::18429:0:99999:7::: |
1 2 3 4 5 6 7 8 9 10 11 12 |
$ ssh hoge-server Welcome to Alpine! The Alpine Wiki contains a large amount of how-to guides and general information about administrating Alpine systems. See <http://wiki.alpinelinux.org>. You can setup the system with the command: setup-alpine You may change this message by editing /etc/motd. hoge@hoge-server:~$ |
■まとめ
ディストリビューションごとに設定が特殊ということなので、認識するしかないですが、BusyBoxのコマンドについてもっと調べる必要がありますね。これはハマった。
0件のコメント