LoginSignup
23

More than 5 years have passed since last update.

QNAP SSH接続を公開鍵認証にできた。

Last updated at Posted at 2017-01-06

TL;DR

  • /mnt/HDA_ROOT/.config/ssh/sshd_configを修正することで一般的な方法でsshdの設定を変更できる
  • ユーザーのhomeディレクトリのオーナーはadminなので速やかに修正する

きっかけ

SSHログイン出来なくなった

ファームウェア更新通知が来たのでバージョンを4.2.2に上げて再起動したら、
SSHログイン出来なくなったのでいろいろ調査した結果、公開鍵認証でログインできるようになった。

やったこと

あわてず騒がずtelnetでログイン

普段はtelnet切っているので設定でEnableにしてからログイン
キャプチャ.PNG

SSHの設定を確認

telnet
$ cat /etc/ssh/sshd_config | more

特に問題は無いようだ。(rootでログインするのは問題だけど仕様です)

んじゃ立ち上げなおしてみるか。

telnet
$ 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を探す

telnet
$ cd /
$ find -name 'sshd_config'

しばし待つ。
・・・
帰ってきた。

telnet
./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だな

telnet
$ cp /etc/ssh/sshd_config /mnt/HDA_ROOT/.config/ssh/sshd_config

これでWeb上からSSHのEnable/Disableしても、問題なくなった。
HDA_ROOTって事は再起動しても消えないはず。
・・・
再起動してもSSHログイン出来るぞ。
ん?これはもしかしてSSH設定を弄れるのではないか?:smirk:

公開鍵認証の設定

いままで再起動のたびに/etc/ssh/sshd_configを初期化されていたので諦めていたけど、今回はいけそうな気がする。

まずはadminを公開鍵認証

sshd_configを編集して下のコメント(#)を外す

/mnt/HDA_ROOT/.config/ssh/sshd_config
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys

次に鍵生成。ほんとはクライアントで鍵生成して公開鍵をサーバに送るのだけど
簡単のためサーバ側のssh-keygenを使用する。
秘密鍵(qnap_rsa)は絶対に秘密なので本当は/share/Public/においてはいけない。

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/qnap_rsa

出来た秘密鍵はありがたくクライアントで使用させていただく。
ここまでやればWeb上でSSHのEnable/Disableをすれば、公開鍵認証でつながるようになる。

一般ユーザーを追加

一般ユーザーであるnakさんにsshを開放する手順。
まずはadminで下準備。
sshd_configにnakさんを追加。

/mnt/HDA_ROOT/.config/ssh/sshd_config
AllowUsers admin nak

まだadmin。
susudoも入っていないのでインストール。

admin
$ opkg install coreutils sudo

まだまだadmin。
nakさんのHomeディレクトリをssh readyにする。

admin
$ cd /share/homes/
$ chown nak:everyone nak
$ chmod 711 nak

ここからnakさん。
.sshの設定をadminと同じように行い、できた秘密鍵(nak_qnap_rsa)をクライアントで利用する。

nak
$ 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の場所はここ。

/mnt/HDA_ROOT/.config/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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23