1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dev ContainerでGitHubにSSH接続する手順

1
Last updated at Posted at 2026-02-21

はじめに

Dev ContainerでLaTeXの環境構築をしたはいいものの、自分のプライベートリポジトリをSSHを使ってクローンしようとしたら、うまくいきませんでした。どうやら、コンテナ内でSSH接続するには一工夫必要なようで、今回はそれをやってみました。

前提

  • VS Codeがインストールされている
  • WSL2がインストールされている
  • Dockerがインストールされている

筆者の環境

  • Windows11
  • WSL2のディストリビューション:ubuntu-22.04
  • Docker Desktop

1. WSLでSSH接続する

SSHキーの生成

WSLを開いて、ターミナルで、

cd ~/.ssh

と打ち、.sshフォルダに移動します。なければ作ってください。
次に、

ssh-keygen -t rsa

と打ちます。何か聞かれるので、3回エンターを押せば大丈夫です。
これで、.sshフォルダにid_rsaファイルとid_rsa.pubファイルが生成されます。このうち、id_rsaは秘密鍵が書かれているので、他人に見せないようにしましょう。

GitHubへの登録

次に、id_rsaに書かれている公開鍵をGitHubにアップします。https://github.com/settings/ssh に移動して、New SSH keyを押します。
スクリーンショット 2026-02-21 021134.png

Titleには、好きなSSHキーの名前を入力します。どのデバイスで使っているキーなのかを判別するために、わかりやすい名前を推奨します。
Keyには、id_rsa_pubに書かれている公開鍵をコピーして貼り付けます。
スクリーンショット 2026-02-21 020413.png
入力が終わったらAdd SSH keyを押します。

接続の確認

WSLで

ssh -T git@github.com

と打ち、
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
と返ってきたら接続は成功しています。

2. Dev ContainerでSSH接続する

devcontainer.jsonの記述

ワークスペースのdevcontainer.jsonを以下を記述します。

{
    "name": "texlive",
    "image": "texlive/texlive:latest",
    "features": {
        "ghcr.io/devcontainers/features/common-utils:2": {},
        "ghcr.io/devcontainers/features/git:1": {}
    },
    "mounts": [
        {
            "target": "${containerWorkspaceFolder}/build",
            "type": "volume"
        },
        "source=${localEnv:SSH_AUTH_SOCK},target=${localEnv:SSH_AUTH_SOCK},type=bind"
    ],
    "remoteEnv": {
        "SSH_AUTH_SOCK": "${localEnv:SSH_AUTH_SOCK}"
    },
    "customizations": {
        "vscode": {
            "extensions": [
                "James-Yu.latex-workshop"
            ]
        }
    }
}

ここでは、SSH接続に関係するものだけ説明します。

  • "mounts"で、ホストのディレクトリやファイルをコンテナにマウントする設定を記述します。ホストOS側のSSH Agentソケットをコンテナ内にマウントすることで、コンテナ内からホストOS側のSSH鍵を利用できるようにしています。
  • "remoteEnv"で、コンテナ内の環境変数を設定します。SSH_AUTH_SOCKに、ホスト側のSSH Agentソケットのパスを設定します。

.bashrcの設定

.bashrcに以下を記述します。

if [ -z "$SSH_AUTH_SOCK" ]; then
    SSH_AGENT_ENV="$HOME/.ssh/ssh-agent"

    if [ ! -f "$SSH_AGENT_ENV" ]; then
        mkdir -p "$HOME/.ssh"
        ssh-agent -s > "$SSH_AGENT_ENV"
    fi

    if [ -f "$SSH_AGENT_ENV" ]; then
        eval "$(cat "$SSH_AGENT_ENV")" > /dev/null
    fi

    if [ -z "$SSH_AUTH_SOCK" ] || [ ! -S "$SSH_AUTH_SOCK" ]; then
        mkdir -p "$HOME/.ssh"
        ssh-agent -s > "$SSH_AGENT_ENV"
        eval "$(cat "$SSH_AGENT_ENV")" > /dev/null
    fi

    ssh-add ~/.ssh/id_rsa 2>/dev/null
fi

これを書くことで、シェルを起動したときに自動的にSSH Agentが起動し、秘密鍵を登録してくれます。

コンテナの起動

左下の><を押して、「Reopen in Container」(日本語なら「コンテナーで再度開く」)を選択します。
スクリーンショット 2026-02-20 155625.png

コンテナが起動したら、ポップアップで「コンテナー構成ファイルが変更されました。変更を反映するには再構築する必要があります。」と出ると思うので、左下の><を押して、「Rebuild Container」(日本語なら「コンテナーのリビルド」)を選択します。
スクリーンショット 2026-02-21 033711.png

接続の確認

リビルドが完了したら、Dev Container上でSSH接続が使えるようになっているはずです。試しにターミナルで、

ssh -T git@github.com

を実行してみましょう。WSLの場合と同様の返事が返ってきたら成功です。

3. おわりに

私の知識不足や調べ不足かもしれませんが、Dev Container上でSSH接続するのにかなり苦労しました。同じ内容で困っている人がいたら、少しでも解決の手助けになればと思います。

参考

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?