はじめに
WindowsでCursorエディタを使いたいけど「Dev Containers」が使えないのでDockerコンテナ上で開発できないし、けどどうにかして使いたいなぁということで、色々と調べた結果、最終的にsshで接続してCursorからDockerコンテナ内に接続できたので、記念に初記事を投稿します。
(2024/01/09 追記)
バージョン:0.22.0 から「Dev Containers」に対応したようです!
試してみましたが、無事にコンテナの中に入れることを確認しました。
以降、Cursorでコンテナの中に入るためだけにssh接続する環境を作る必要は無さそうです。
wsl2上のDockerコンテナにssh接続する環境を作成
1. ssh公開鍵の作成(WSL)
ssh-keygen -t ed25519 -f .ssh/(公開鍵名)
2. Dockerコンテナの作成(WSL)
FROM ubuntu:20.04
USER root
# SSHサーバーをインストールする
RUN apt-get update && apt-get install -y \
nano \
openssh-server \
&& rm -rf /var/lib/apt/lists/*
# SSHでrootログインを許可する
RUN mkdir -p /run/sshd
RUN echo 'root:password' | chpasswd
# 公開鍵をコンテナにコピーする
COPY .ssh/ssh_test.pub /root/.ssh/authorized_keys
# 公開鍵のパーミッションを設定する
RUN chown root:root /root/.ssh/authorized_keys && \
chmod 600 /root/.ssh/authorized_keys
# SSH設定を更新する
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
# SSHサーバーを起動する
CMD ["/usr/sbin/sshd", "-D"]
docker-compose.yml
version: '3.9'
services:
develop:
build:
context: .
container_name: SSH_TEST
tty: true # コンテナ維持
restart: always # PC起動時に自動でコンテナ起動
ports:
- "2224:22" # ホストの2224番ポートをコンテナの22番ポートにマッピング
3. 公開鍵をローカルPCへ持ってくる
C:\\Users\\(ユーザー名)/.ssh/
4. configファイルの設定(存在しない場合は新規作成)
C:\\Users\\(ユーザー名)/.ssh/config
Host ssh_test
HostName localhost ※DockerコンテナのIPアドレス(localhostでOK)
Port 2224 ※Dockerコンテナのポート番号
User root ※Dockerコンテナのユーザー名
IdentityFile ~/.ssh/ssh_test ※転送した公開鍵のパス
5. configファイルと公開鍵の権限変更(権限が広すぎるというエラーを回避)
icacls config /reset
icacls config /inheritance:r
icacls config /grant:r "$($env:username):(R)"
icacls.exe .\ssh_test /inheritance:r
icacls.exe .\ssh_test /grant:r "$($env:USERNAME):(R)"
Cursorエディタから接続
- Cursorエディタのコマンドパレットで
「Remote-SSH:Connect to Host」
を選択し、configファイルに追加した接続先を選択 - パスワードを求められるのでssh公開鍵作成時に設定したパスワードを入力
- 接続に成功するとこんな感じでコンテナ内に入れます↓
おわりに
私の環境では上記の方法でCursorでDockerコンテナ内に接続することができました。
どなたかのお役にたったら幸いです。
最後まで御覧いただきありがとうございました。