SSH
公開鍵認証方式
synology
DiskStation

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

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 (ここではhogehoge.com)に "admin"でログイン
$ ssh -p 22 admin@hogehoge.com

admin アカウントのパスワードを入力
admin@hogehoge.com's password:

adminでログイン済みなので、"sudo -i"と入力
admin@hogehoge:/$ sudo -i

再度 admin アカウントのパスワードを聞かれるので、パスワードを入力
Password:

成功するとプロンプトのアカウント表示が admin から root に変わる
root@hogehoge:~#

サーバの SSH 設定ファイルを編集

$ vim /etc/ssh/sshd_config

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

sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

公開鍵・秘密鍵を作る

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

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

参考資料: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

vim で authorized_keys を開き、公開鍵をコピペする

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

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

注意:パーミッションを正確に設定しないと、SSH ログインができない

$ 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 の設定ファイルの文法チェック

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

$ /bin/sshd -t [-d]

sshd の再起動

synoservicectl --reload sshd

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

ログインのテスト

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

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

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

$ ssh user@hogehoge.com

以上