SynologyのNASをVSCodeのRemote Development環境として使う
手元のNASをRemote Development環境にしてみました。
方針
- SynologyNASのDockerパッケージでUbuntuコンテナを作ってsshdを動かす。
- VSCodeのRemote - SSH拡張機能からsshで接続する。
- 注: 基本的にはコンテナ内でのsshd実行は非推奨とされているが、今回はホスト(NAS本体)へのSSHを避けることを優先した。
- NAS本体へSSHする場合は Connect to remote Docker over SSH を検討すると良さそう。
環境・機材
- NAS: Synology DS920+
- DSM:
7.0.1-42218 Update 3 - Docker:
20.10.3-1239
- DSM:
- PC: Windows 10 Pro (21H2)
- Visual Studio Code:
Version 1.65.2- Remote - SSH:
v0.76.1
- Remote - SSH:
- Visual Studio Code:
PCはVSCodeインストール済み・ssh鍵が生成済みの状態から始める。
イメージのダウンロード
- DSMのパッケージセンターから、Dockerパッケージをインストールする。
Dockerアプリ - イメージ - 追加 - URLから追加でubuntuを指定し、イメージをダウンロードする。
- ダウンロード時、オプション(ユーザー名/パスワード)は空欄にする。
- 今回は
ubuntu:20.04を選択した。
- 今回は
- ダウンロード時、オプション(ユーザー名/パスワード)は空欄にする。
コンテナの起動
- ダウンロードしたイメージを選択し、
起動 - 任意のコンテナ名をつける。
詳細設定-ポート設定-追加で コンテナポート 22 TCP を指定する。
- ローカルポートは任意(こだわりが無ければ
自動のままでOK)- このポートがSSH接続時にPCから指定するポート番号となる
- ローカルポートは任意(こだわりが無ければ
- コンテナの作成を完了する。
SSHサーバーの設定と起動
Dockerアプリ - コンテナで作成したコンテナを選び、詳細を選択する。- ローカルポートを
自動にしていた場合、この画面のポート設定でポート番号を確認する。
- ローカルポートを
端末タブで端末を開く。- sshをインストールする。
apt update apt upgrade -y apt install ssh -y- tips: Dockerアプリの端末画面では、
Ctrl+Aを押してからCtrl+Vでペーストできる。
- tips: Dockerアプリの端末画面では、
- PCの公開鍵を置く。
mkdir -m 700 -p ~/.ssh/ echo "あなたのPCの公開鍵" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys - 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から接続
- VSCodeの拡張機能
Remote - SSHをインストールする。- 方法1: VSCode内の Extensions で
remote sshと検索する。 - 方法2: Remote - SSH からインストールする。
- 方法1: VSCode内の Extensions で
- VSCodeウィンドウ左下の 緑色のボタン(Open a Remote Window)をクリックする。

Connect to Host→Add New SSH Hostを選択する。ssh -p ローカルポート番号 root@NASのIPアドレスを入力する。- 例:NASのIPアドレスが
192.168.11.16、 ローカルポート番号が40000ならssh -p 40000 root@192.168.11.16
- 例:NASのIPアドレスが
以上で接続できた。