手元のNASをRemote Development環境にしてみました。

方針

環境・機材

  • NAS: Synology DS920+
    • DSM: 7.0.1-42218 Update 3
    • Docker: 20.10.3-1239
  • PC: Windows 10 Pro (21H2)
    • Visual Studio Code: Version 1.65.2
      • Remote - SSH: v0.76.1

PCはVSCodeインストール済み・ssh鍵が生成済みの状態から始める。

イメージのダウンロード

  1. DSMのパッケージセンターから、Dockerパッケージをインストールする。
  2. Dockerアプリ - イメージ - 追加 - URLから追加ubuntu を指定し、イメージをダウンロードする。
    pull container
    • ダウンロード時、オプション(ユーザー名/パスワード)は空欄にする。
      • 今回は ubuntu:20.04 を選択した。

コンテナの起動

  1. ダウンロードしたイメージを選択し、起動
  2. 任意のコンテナ名をつける。
  3. 詳細設定 - ポート設定 - 追加コンテナポート 22 TCP を指定する。
    container port
    • ローカルポートは任意(こだわりが無ければ自動のままでOK)
      • このポートがSSH接続時にPCから指定するポート番号となる
  4. コンテナの作成を完了する。

SSHサーバーの設定と起動

  1. Dockerアプリ - コンテナ で作成したコンテナを選び、詳細 を選択する。
    • ローカルポートを自動にしていた場合、この画面のポート設定でポート番号を確認する。
  2. 端末タブで端末を開く。
  3. sshをインストールする。
    apt update
    apt upgrade -y
    apt install ssh -y
    
    • tips: Dockerアプリの端末画面では、 Ctrl+A を押してから Ctrl+V でペーストできる。
  4. PCの公開鍵を置く。
    mkdir -m 700 -p ~/.ssh/
    echo "あなたのPCの公開鍵" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  5. sshd_configを設定しsshdを起動する。
    sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/" /etc/ssh/sshd_config
    sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/" /etc/ssh/sshd_config
    sed -i "s/#PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config
    /etc/init.d/ssh restart
    
    • 注: 今回は十分に信頼されたLAN内での使用を想定している。

VSCodeから接続

  1. VSCodeの拡張機能 Remote - SSH をインストールする。
    • 方法1: VSCode内の Extensions で remote ssh と検索する。
    • 方法2: Remote - SSH からインストールする。
  2. VSCodeウィンドウ左下の 緑色のボタン(Open a Remote Window)をクリックする。
    open a remote window
  3. Connect to HostAdd New SSH Host を選択する。
  4. ssh -p ローカルポート番号 root@NASのIPアドレス を入力する。
    • 例:NASのIPアドレスが 192.168.11.16、 ローカルポート番号が 40000 なら ssh -p 40000 root@192.168.11.16

以上で接続できた。