#TL;DR
- /mnt/HDA_ROOT/.config/ssh/sshd_configを修正することで一般的な方法でsshdの設定を変更できる
- ユーザーのhomeディレクトリのオーナーはadminなので速やかに修正する
#きっかけ
##SSHログイン出来なくなった
ファームウェア更新通知が来たのでバージョンを4.2.2
に上げて再起動したら、
SSHログイン出来なくなったのでいろいろ調査した結果、公開鍵認証でログインできるようになった。
#やったこと
##あわてず騒がずtelnetでログイン
普段はtelnet切っているので設定でEnableにしてからログイン
##SSHの設定を確認
$ cat /etc/ssh/sshd_config | more
特に問題は無いようだ。(rootでログインするのは問題だけど仕様です)
##んじゃ立ち上げなおしてみるか。
$ daemon_mgr sshd stop sshd
$ daemon_mgr sshd start "/usr/sbin/sshd -f /etc/ssh/sshd_config -p 22"
お、SSHでログインできるようになった。
でもWeb上からSSHのEnable/Disableをするとまた繋がらなくなる。
こりゃどこか他のsshd_configを読んでるな。
##恒久的な対策をする
って事でsshd_configを探す
$ cd /
$ find -name 'sshd_config'
しばし待つ。
・・・
帰ってきた。
./etc/ssh/sshd_config
./mnt/HDA_ROOT/.config/ssh/sshd_config
./share/MD0_DATA/.qpkg/Optware/etc/openssh/sshd_config
./share/MD0_DATA/.qpkg/Entware-ng/etc/ssh/sshd_config
パッケージのSSH/OpenSSHは入れたけどQNAPが意地悪して起動するたびに自分の設定に書き換えてしまうので使っていない。
なので怪しいのは/mnt/HDA_ROOT/.config/ssh/sshd_config
だな
$ cp /etc/ssh/sshd_config /mnt/HDA_ROOT/.config/ssh/sshd_config
これでWeb上からSSHのEnable/Disableしても、問題なくなった。
HDA_ROOTって事は再起動しても消えないはず。
・・・
再起動してもSSHログイン出来るぞ。
ん?これはもしかしてSSH設定を弄れるのではないか?
#公開鍵認証の設定
いままで再起動のたびに/etc/ssh/sshd_configを初期化されていたので諦めていたけど、今回はいけそうな気がする。
##まずはadminを公開鍵認証
sshd_configを編集して下のコメント(#)を外す
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
次に鍵生成。ほんとはクライアントで鍵生成して公開鍵をサーバに送るのだけど
簡単のためサーバ側のssh-keygenを使用する。
**秘密鍵(qnap_rsa)**は絶対に秘密なので本当は/share/Public/においてはいけない。
$ cd ~/.ssh
$ ssh-keygen -t rsa -f qnap_rsa
$ mv qnap_rsa.pub authorized_keys
$ chmod 600 authorized_keys
$ chmod 666 qnap_rsa
$ mv qnap_rsa /share/Public/qnap_rsa
出来た秘密鍵はありがたくクライアントで使用させていただく。
ここまでやればWeb上でSSHのEnable/Disableをすれば、公開鍵認証でつながるようになる。
##一般ユーザーを追加
一般ユーザーであるnakさんにsshを開放する手順。
まずはadminで下準備。
sshd_configにnakさんを追加。
AllowUsers admin nak
まだadmin。
su
もsudo
も入っていないのでインストール。
$ opkg install coreutils sudo
まだまだadmin。
nakさんのHomeディレクトリをssh readyにする。
$ cd /share/homes/
$ chown nak:everyone nak
$ chmod 711 nak
ここからnakさん。
.sshの設定をadminと同じように行い、できた秘密鍵(nak_qnap_rsa)をクライアントで利用する。
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh
$ ssh-keygen -t rsa -f qnap_rsa
$ mv qnap_rsa.pub authorized_keys
$ chmod 600 authorized_keys
$ chmod 666 qnap_rsa
$ mv qnap_rsa /share/Public/nak_qnap_rsa
これで一般ユーザーが公開鍵認証でログインできるようになったのでsshd_configを変更して、さらに守りを固めればよい。
PermitRootLogin no
PasswordAuthentication no
またnakさんのシェルを変更するためのpasswdの場所はここ。
nak:x:1001:100:Linux User,,,:/share/homes/nak:/bin/bash
#参考文献
QNAP SSH接続を公開鍵認証にする
SSHの鍵認証設定
SSH用のユーザー追加手順と注意点のまとめ
QNAP forum : su or sudo "command not found"
QNAP forum : how to enable ssh history