Blog
SynologyNASを鍵認証にする2024.02.03

Note
前回、マイクラサーバーをUbuntuで起動してからターミナルソフトを起ち上げる機会が増えたのだが、いちいちユーザー名とパスフレーズを入力するのが面倒くさい……面倒くさくない?
最近はパスワードレスへの移行が勧められているし、この際なのでNASを鍵認証にしてしまおうと思う。
やり方はSynologyのチュートリアルに全部書いてあるが、自分なりに噛み砕いて備忘録として残しておく。
スタートボタン右クリからWindows PowerShellを起動して(管理者として実行ではない)鍵作成コマンドを実行。
作成した鍵にパスワードを設定するよう求められるが、[Enter]2回押しでパスワードなしの鍵となる。
2行目で特にパスを指定していなければ「C:\Users\ユーザー名」に「id_rsa(秘密鍵)」「id_rsa.pub(公開鍵)」というファイルが作成されているので控えておく。
DSMにログインしてFireStationで「./home/.ssh」フォルダを作成し、その中に「id_rsa.pub(公開鍵)」をアップロードする。
TeraTermからNASにログインして先ほど作成した「./home/.ssh」のパーミッションを確認。
パーミッションが「drwx------」になっていればchmodは実行しなくてもよい。
ディレクトリ「.ssh」に移動し、公開鍵が保存されているのを確認できたら登録する。
authorized_keysというファイルが生成されるので、パーミッションを600に設定した後、不要なファイルを削除して終了。
管理者権限でsuコマンドを実行。「sshd_config」というファイルの編集画面へ入る。
ここからはNASのシステムそのものを弄るので慎重に。
以下の行のコメントアウト(#)を外して有効化する(なんかミスったヤバイと思ったら[Esc]→[:q!]→[Enter]で編集を破棄して退出)
設定がミスってないか確認してからSSHDを再起動。
以上でNAS側の設定は完了だが、なんかミスってた時のためにこのセッションは切断せずに繋げておく(最悪ログインできなくなった時にこのセッションで元に戻す)
エクスプローラーを開き「id_rsa(秘密鍵)」を所定のパスに移動する(変更してなければ「C:/Users/ユーザー名/.ssh」)
TeraTermのメニューバーから「設定」→「SSH認証」を開き、デフォルトユーザー名に「今ログインしているユーザー名」を、認証方式を「秘密鍵」にして先ほど秘密鍵を移動した場所を指定する。 これで設定できたように思えるがもうひと手間必要だった。自分はここで詰まってた。
再びメニューバーから「設定」→「設定の保存」を開き、「TERATERM.INI」という構成設定ファイルを下記フォルダに保存する。バックアップを取っておくとよい。
C:\Program Files (x86)\teraterm\TERATERM.INI
おっと、ここでセッションを切断して鍵認証を試してはいけない。
メニューバーから「ファイル」→「新しい接続」([Alt]+[n]でも可)で新しい接続を開始し、こちらで鍵認証できるか確認する。 ログインできなければどこかでミスっている。
公開鍵の登録とパーミッションの設定やNASのSSHD設定が怪しいので戻って見直すか、最悪全て元に戻すこと。完璧に設定できたと確信できるまでパスワードレスにしてはいけない(戒め)
鍵認証は始めての試みで、様々なサイト様を参考にしながら継ぎ接ぎで設定したのでこの記事は色々とガバいと思う。
これを機にセキュリティ意識を高めていこうと思った。
参考にさせていただいた偉大なる先駆者様方
最近はパスワードレスへの移行が勧められているし、この際なのでNASを鍵認証にしてしまおうと思う。
やり方はSynologyのチュートリアルに全部書いてあるが、自分なりに噛み砕いて備忘録として残しておく。
鍵作成
作成した鍵にパスワードを設定するよう求められるが、[Enter]2回押しでパスワードなしの鍵となる。
$ ssh-keygen
id_rsa
[Enter]→[Enter]
$ exit
id_rsa
[Enter]→[Enter]
$ exit
公開鍵をNASにアップロードする
公開鍵の登録とパーミッションの設定
パーミッションが「drwx------」になっていればchmodは実行しなくてもよい。
./home
$ ll
$ chmod 700 .ssh
$ ll
$ chmod 700 .ssh
authorized_keysというファイルが生成されるので、パーミッションを600に設定した後、不要なファイルを削除して終了。
$ cd .ssh
$ cd ls
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ rm -fv id_rsa.pub
$ cd ls
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ rm -fv id_rsa.pub
NASのSSHD設定
ここからはNASのシステムそのものを弄るので慎重に。
$ sudo su -
password
$ vi /etc/ssh/sshd_config
password
$ vi /etc/ssh/sshd_config
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ここをnoにするとパスワードでのログインが禁止となる。今回は触らない。
#AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ここをnoにするとパスワードでのログインが禁止となる。今回は触らない。
$ which sshd
$ /usr/bin/sshd -t
ミスってなければ何も表示されない
$ service sshd restart
$ /usr/bin/sshd -t
ミスってなければ何も表示されない
$ service sshd restart
TeraTermから秘密鍵でログインする
TeraTermのメニューバーから「設定」→「SSH認証」を開き、デフォルトユーザー名に「今ログインしているユーザー名」を、認証方式を「秘密鍵」にして先ほど秘密鍵を移動した場所を指定する。 これで設定できたように思えるがもうひと手間必要だった。自分はここで詰まってた。
再びメニューバーから「設定」→「設定の保存」を開き、「TERATERM.INI」という構成設定ファイルを下記フォルダに保存する。バックアップを取っておくとよい。
C:\Program Files (x86)\teraterm\TERATERM.INI
おっと、ここでセッションを切断して鍵認証を試してはいけない。
メニューバーから「ファイル」→「新しい接続」([Alt]+[n]でも可)で新しい接続を開始し、こちらで鍵認証できるか確認する。 ログインできなければどこかでミスっている。
公開鍵の登録とパーミッションの設定やNASのSSHD設定が怪しいので戻って見直すか、最悪全て元に戻すこと。完璧に設定できたと確信できるまでパスワードレスにしてはいけない(戒め)
秘密鍵の管理は厳重に
これを機にセキュリティ意識を高めていこうと思った。
参考にさせていただいた偉大なる先駆者様方
-
SSH 経由で RSA キー ペアで DSM にサインインする方法 - Synology ナレッジセンター
https://kb.synology.com/ja-jp/DSM/tutorial/How_to_log_in_to_DSM_with_key_pairs_as_admin_or_root_permission_via_SSH_on_computers -
SSHの鍵認証設定 #ssh公開鍵認証 - Qiita
https://qiita.com/gotohiro55/items/36a22516de2b381b3c6e -
今さらTeratermのデフォルト設定いじってみた #SSH - Qiita
https://qiita.com/tk825/items/7988fbf3d62b1f95e927