以前、Visual Studio CodeのRemote Developmentの設定方法について記事にしました。今回は、踏み台サーバーを経由して開発環境に接続する方法を記載してみようと思います。
構成
- Windows 10 (Visual Studio Code)
- Ubuntu 22.04 (踏み台サーバー)
- public IP: 192.168.100.100/24
- internal IP: 192.168.10.100/24
- Ubuntu 22.04 (接続先)
- internal IP: 192.168.10.200/24
踏み台サーバーと接続先のサーバーの設定
踏み台サーバーのインターフェイスに外部接続用のIPアドレスとプライベートネットワークのIPアドレスを設定しておきます。
Visual Studio Codeの接続先となるサーバーのインターフェイスにプライベートネットワークのIPアドレスを設定しておきます。
それぞれにWindowsで生成した公開鍵を設定しておきます。
公開鍵の設定は、cloud-initを使うとログインせずに設定できます。
ssh configの設定
以下のように C:\Users\User Name\.ssh/config
ファイルを編集します。
Host bustion HostName 192.168.100.100 User UserName ForwardAgent yes Host dev HostName 192.168.10.200 User UserName ProxyJump bustion
ForwardAgentは、秘密鍵を踏み台サーバーに置かずにアクセスするためのssh agent機能を使う設定となります。
ProxyJumpは、踏み台サーバーを経由してターゲットサーバーにssh接続するオプションで、以前はProxyCommandが使われていましたが、ProxyJumpはシンプルに記述ができます。
Visual Studio CodeのRemote Developmentの設定 (Windows 10側)
右下のグリーンの ><
ボタンをクリックすると、メニューが表示されるため、 Connect to Host をクリックします。
ssh configに設定した踏み台サーバーを経由した接続先のホスト名をクリックします。
platformに Linux
を選択します。
vscodeのファイルがインストールされて、接続が完了します。
Local Port Forwardingの利用
Local Port Forwardingを利用して、8000番のポートに届いた通信を踏み台サーバーを経由して接続先のサーバーの8000番ポートへ転送ができるか試してみます。
通信を確認するために、pythonでWebサーバーを起動してみます。
python3 -m http.server 8000
以下のように C:\Users\User Name\.ssh/config
ファイルを編集すると、Local Port Forwardingができます。
Host bustion HostName 192.168.100.100 User UserName ForwardAgent yes Host dev HostName 192.168.10.200 User UserName ProxyJump bustion LocalForward 8000 localhost:8000
PowerShellでsshコマンドで接続して、Local Port Forwardingができるか確認してみます。
ssh先で何もしないため、-Nオプションを指定しておきます。
ssh -N dev
ブラウザからlocalhost:8000にアクセスし接続できることを確認します。
python3 -m http.server 8000 127.0.0.1 - - [01/Dec/2024 00:26:49] "GET / HTTP/1.1" 200 -
また、vscodeでもLocal Port Forwardingができます。
ssh configでLocalForwardの設定を戻し、vscodeのPORTS を開いて、 Forward a Port
ボタンをクリックします。
同様に、ブラウザからlocalhost:8000にアクセスし接続できることを確認します。