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アドレスが
以上で接続できた。