LoginSignup
41
32

More than 3 years have passed since last update.

Synology DiskStation で SSH 接続を公開鍵認証方式にする

Last updated at Posted at 2018-04-03

Synology DiskStation の DiskStation Manager (DSM) のウェブ管理画面で SSH 機能を設定する

Synology DiskStation で SSH を有効にする

DiskStation Manager (DSM) のウェブ管理画面から「コントロールパネル」→「端末とSNMP」→「SSHサービスを有効化する」をクリック

01_ssh.png

Synology DiskStation でユーザーホームの設定を有効にする

注意:「ユーザーホームのサービスを有効にする」が無効になっていると、後述の /var/services/homes/ ディレクトリにアクセスできないので注意

DiskStation Manager (DSM) のウェブ管理画面から「コントロールパネル」→「ユーザー」→「詳細」→「ユーザーホーム」→「ユーザーホームサービスを有効にする」をクリック

02_userhome.png

Synology DiskStation に SSH ログインする

注意:SSH/Telnet は、[administrators] グループに属するユーザーでしかシステムにログインできない
注意:root 昇格の方法が DiskStation Manager (DSM) 6.0 以降は admin ユーザーでログイン後、sudo -i コマンドの実行に変更されている

サーバ に SSH ログインする

ローカルマシンのターミナルから、Synology DiskStation の admin ユーザーと DiskStation のサーバ IP アドレス(今回の例では 192.168.1.10 )を指定して SSH ログインする

ローカルマシンのターミナル
### 192.168.1.10 のサーバーに SSH ログインする
$ ssh -p 22 admin@192.168.1.10
### admin ユーザーのパスワードを入力する
admin@192.168.1.10's password: 
### admin ユーザーでログインした状態で sudo -i と入力して root ユーザーに昇格する
admin@192.168.1.10:/$ sudo -i
### root ユーザーのパスワード( admin ユーザーのパスワードと同じもの)を入力する
Password: 
### 成功するとプロンプトのユーザー表示が admin から root に変わる
root@192.168.1.10:~#
### 試しに OpenSSH のバージョンを ssh -V で確認してみる
root@192.168.1.10:~# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2r-fips  26 Feb 2019

【作業不要:デフォルト値で設定済み】 サーバの SSH 設定ファイルを編集

$ vim /etc/ssh/sshd_config

sshd_config ファイルの以下の部分のコメント(先頭にある#)を外して、SSHの設定をする

sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

参考資料:manページ — SSHD_CONFIG
参考資料:OpenSSH-7.3p1 日本語マニュアルページ (2016/10/15) SSHD_CONFIG (5)
参考資料:OpenSSH (sshd) のデフォルト値
参考資料:SSH で root のみ公開鍵認証を強制する

秘密鍵・公開鍵を作る

ここでは、ローカルマシン上で、公開鍵・秘密鍵を生成する。ここでは、RSA を 4096bit 、コメントを fugafuga、ファイル名を hogehoge とした

$ ssh-keygen -t rsa -b 4096 -C "fugafuga" -f hogehoge

コマンドを実行すると作業ディレクトリに hogehoge(秘密鍵)とhogehoge.pub(公開鍵)ができる

参考資料:2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方

公開鍵を設置する

注意:公開鍵は、/var/services/homes/ 以下のユーザーディレクトリ( SSH ログインしたいユーザー名のディレクトリ)に設置する。 今回、使用するユーザーがuserなので、SSH 設定ファイルは/var/services/homes/user/に設置した。

.sshディレクトリを作り、authorized_keysのファイルを作成する

$ mkdir /var/services/homes/user/.ssh
$ touch /var/services/homes/user/.ssh/authorized_keys

vimauthorized_keys を開き、公開鍵(上記で作成したhogehoge.pubの中身すべて)をコピペする

$ vim /var/services/homes/user/.ssh/authorized_keys

サーバのディレクトリのパーミッションを設定する

注意:パーミッションを正確に設定しないと、SSH ログインができない
参考:公式サイトには .ssh ディレクトリと authorized_keys のパーミッションを700に設定する記述あり
参考:公式サイトには .ssh ディレクトリと authorized_keys の所有者とグループをrootに設定する記述あり

以下は、筆者の設定例

$ chown -R user:users /var/services/homes/user/
$ chmod -R 755 /var/services/homes/user/
$ chmod 700 /var/services/homes/user/.ssh
$ chmod 644 /var/services/homes/user/.ssh/authorized_keys

sshd の設定ファイルの文法チェック

コマンド実行後に何も表示されなければ、文法チェックは正常終了(デバッグ出力をするには sshd -t -d のように -d オプションを指定する)

$ sshd -t

sshd の再起動

注意: synoservicectl --restart sshd は SSH のコネクションがロストする
ロストした場合は、ウェブ管理画面から「SSHサービスを有効化する」のオン→ オフ→ オンで復活できる

$ synoservicectl --reload sshd

ログインのテスト

初回は秘密鍵の指定が必須

$ ssh -i ~/.ssh/hogehoge user@hogehoge.com

次回からは秘密鍵の指定は不要

$ ssh user@hogehoge.com

TIPS: ~/.ssh/config を設定すると便利になる

参考資料:~/.ssh/configについて
参考資料:.ssh/configファイルでSSH接続を管理する
参考資料:UseKeychainが設定されているMacのssh configをLinuxで使い回す

以上

41
32
2

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
41
32