DS218Playで公開鍵を使ったSSH

DS218PlayでSSH

SynologyのNASDS218playで、ソース管理用Gitサーバーを稼働させるためにSSHを使ったアクセスが必要になったので、その時に行ったSSH関連の設定をまとめてみました。Gitへのアクセスは主にVSCodeを使っているのでSSHは鍵認証で行うようにしました(SSHパスワード認証の場合上手くVSCodeでGitが動かなかったので)。

環境は、クライアントがmacOS Sierra、NASはSynology DS218play(DSM6.2-23739)で行いました。
DS218Playの情報

DS218PlayでSSH機能をを有効化

  1. コントロールパネル端末とSNMPの中にある、ターミナルタブのSSHサービスを有効化する。にチェックを入れます。
    SSHサービスを有効化する
  2. SSHのログインで使うユーザーはusersグループと、administratorグループに所属しておく必要がります。
    SSHユーザーには「administartors」と「users」グループに所属しておく必要あり
  3. 上記の設定を行うと、下記のコマンドでSSH接続できるようになります。ここではSSHユーザー名はhoge、DS218PlayのIPアドレスを192.168.1.1、macから接続しています。
    $ ssh -p 22 hoge@192.168.1.1

macOSで公開鍵と秘密鍵を作成

  1. ここでは暗号化方式RSAで、鍵長4096ビットの鍵を作成します。-C部分はコメントを入力します。途中聞いてくるパスフレーズには何も設定しません。

    $ ssh-keygen -t rsa -b 4096 -C "ds218play-keys" -f ds218playkeys
  2. 作成されたファイルで、ds218playkeysが秘密鍵、ds218playkeys.pubが公開鍵になります。作った公開鍵ds218playkeys.pubをNASに保存して使用します。
    秘密鍵と公開鍵の置き場所

公開鍵をDS218playに設定する

ログインユーザーはhogeというユーザーとします。また公開鍵はtempという共有フォルダー経由で行います。公開鍵をDS218playに保存します。

  1. SSH用のディレクトリを作成します。この中に公開鍵を保存することになります。
    $ $ mkdir /volume1/home/hoge/.ssh
  2. 公開鍵を指定のファイルに保存します。
    $ mv /volume1/temp/ds218playkeys /volume1/home/hoge/.ssh/authorized_keys
  3. SSHで使うディレクトリやファイルのパーミッションを適切な値に変更します。
    $ chown -R hoge:users /volume1/homes/hoge/
    $ chmod -R 755 /volume1/homes/hoge/
    $ chmod 700 /volume1/homes/hoge/.ssh
    $ chmod 644 /volume1/homes/hoge/.ssh/authorized_keys

SSHデーモンの設定ファイルを変更

  1. 鍵認証だけでSSHログオンできるように設定を変更します。/etc/ssh/sshd_configファイルを開いて次の項目のコメントを外します。
    #PubkeyAuthentication yes
     ↓
    PubkeyAuthentication yes
    
    #AuthorizedKeysFile .ssh/authorized_keys
     ↓
    AuthorizedKeysFile .ssh/authorized_keys
  2. SSHDの設定をチェックします。今回の環境では下記のようなメッセージが表示されましたが、SSHで鍵を使ってログオン出来ました。通常はこういったメッセージは表示されないようです。
    $ /bin/sshd -t
    Could not load host key: /etc/ssh/ssh_host_rsa_key
    Could not load host key: /etc/ssh/ssh_host_dsa_key
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    sshd: no hostkeys available -- exiting.

SSHデーモンを再起動

念のためSSHDデーモンを再起動しておきます。

$ sudo synoservicectl --reload sshd

SSH接続

次のようなコマンドでSSHに接続できます。ここではSSHユーザー名はhoge、DS218PlayのIPアドレスを192.168.1.1、macから接続しています。鍵で認証できた場合はパスワードの入力をする必要がありません。

$ ssh hoge@192.168.1.1