Synology NASにSSHで接続する方法と公開鍵認証の設定【DS720+/DSM 7.3】

Synology NAS

 

NASの設定やDockerの操作をターミナルから直接行いたいとき、SSHが使えると作業効率が大幅に上がります。パスワードなしでログインできる公開鍵認証を設定しておけば、毎回パスワードを入力する手間もなくなります。

この記事では、DS720+(DSM 7.3.2)でSSHを有効にして、Macから公開鍵認証で接続するまでの手順を紹介します。

環境

項目 内容
NAS Synology DS720+
DSM 7.3.2-86009 Update 3
クライアント macOS(ターミナル)
認証方式 公開鍵認証(ed25519)

Windowsから接続する場合
この記事のコマンドはMac/Linuxのターミナル向けですが、考え方はWindowsでも同じです。Windows 10/11なら標準のOpenSSH(PowerShellで ssh コマンド)が使えるほか、Tera TermRLogin といったGUIのSSHクライアントも定番です。なかでもRLoginは接続先ごとに設定(ホスト・ポート・鍵)を保存して管理でき、複数のサーバーを扱うときに使いやすいので、筆者はWindows環境ではRLoginを使っています。

STEP 1: DSMでSSHサービスを有効にする

  1. DSMのコントロールパネルを開く
  2. 「端末とSNMP」 をクリック
  3. 「端末」 タブを選択
  4. 「SSHサービスを有効化」 にチェックを入れる
  5. ポート番号を確認(デフォルト: 22)
  6. 「適用」 をクリック

コントロールパネルの端末とSNMP画面。SSHサービスを有効化にチェックを入れ、ポート22を設定している

ポート番号について
デフォルトの22番ポートはブルートフォース攻撃のターゲットになりやすいため、外部公開する場合は別のポート(例: 8022)への変更を推奨します。ローカルネットワーク内のみで使用する場合は22のままでも問題ありません。ポートを変更した場合は、以降のコマンドでそのポート番号を指定する必要があります(後述)。

STEP 2: パスワード認証でSSH接続を確認する

設定が反映されたか、まずパスワード認証で接続を確認します。

Macのターミナルを開いて以下を実行します。

ssh username@192.168.1.100

usernameはDSMのユーザー名、192.168.1.100はNASのIPアドレスに置き換えてください。IPアドレスはDSMの情報センター → ネットワーク で確認できます。

デフォルト以外のポートにした場合
STEP 1でポート番号を22から変更したときは、-p オプションでポートを指定します。以降の ssh-copy-id も同様に -p でポートを指定します。

ssh -p 8022 username@192.168.1.100

初めて接続するホストには、接続先が本物かを確認するフィンガープリント(fingerprint)の確認メッセージが表示されます。

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

yes と入力してEnterを押すと、このホストの鍵が ~/.ssh/known_hosts に登録され、次回以降この確認は表示されなくなります。

フィンガープリントとは
接続先サーバーの公開鍵から計算される識別子で、なりすまし(中間者攻撃)を防ぐための確認です。表示された値がNAS側の鍵と一致していれば安全に接続できます。NAS側の値は、DSMにSSHログイン後に ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub で確認できます。自宅のローカルネットワーク内であれば、通常はそのまま yes で進めて問題ありません。

パスワードを入力してログインできればSSHは正常に動作しています。

username@nas:~$

接続確認後、exitで抜けます。

STEP 3: Macで鍵ペアを生成する

ターミナルで以下のコマンドを実行します。

ssh-keygen -t ed25519 -C "nas-key"

実行すると保存先とパスフレーズを聞かれます。

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/username/.ssh/id_ed25519):  # Enterでデフォルト
Enter passphrase (empty for no passphrase):  # 任意(空でもOK)
Enter same passphrase again:

デフォルトのまま進めると、以下の2ファイルが生成されます。

ファイル 内容
~/.ssh/id_ed25519 秘密鍵(絶対に公開しない)
~/.ssh/id_ed25519.pub 公開鍵(NASに登録する)

すでに鍵ペアがある場合: ls ~/.ssh/ で確認してください。id_ed25519が存在する場合は新規生成不要です。

STEP 4: 公開鍵をNASにコピーする

ssh-copy-idコマンドで公開鍵を自動的にNASへ登録します。

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@192.168.1.100

パスワードを入力するとNAS側の~/.ssh/authorized_keysに公開鍵が追記されます。

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'username@192.168.1.100'"

ポートを変更している場合-p でポートを指定します。

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 8022 username@192.168.1.100

STEP 5: 公開鍵認証で接続を確認する

もう一度SSH接続してみます。

ssh username@192.168.1.100

パスワードを聞かれずにログインできれば成功です。

username@nas:~$

接続をシンプルにする(~/.ssh/config)

毎回IPアドレスとユーザー名を入力するのは手間なので、~/.ssh/configにエイリアスを設定しておくと便利です。

nano ~/.ssh/config

以下を追記します。

Host nas
  HostName 192.168.1.100
  User username
  Port 8022
  IdentityFile ~/.ssh/id_ed25519

Port 行は、SSHポートを22から変更した場合に追加します(デフォルトの22のままなら省略可)。config にポートを書いておけば、接続時に毎回 -p を付ける必要がなくなります。

保存後、以下のコマンドだけで接続できるようになります。

ssh nas

まとめ

手順 内容
SSHサービスの有効化 DSM → コントロールパネル → 端末とSNMP
初回接続時のフィンガープリント確認 表示されたら yesknown_hosts に登録
デフォルト以外のポート ssh -p <ポート> で指定(config なら Port 行)
鍵ペアの生成 ssh-keygen -t ed25519
公開鍵の登録 ssh-copy-id でNASへコピー
接続の簡略化 ~/.ssh/config にエイリアスを設定

SSHが使えるようになると、DockerコンテナのログをCLIで確認したり、ファイルの権限変更を直接行うなど、GUIでは難しい操作がスムーズにできるようになります。

関連記事

コメント

タイトルとURLをコピーしました