1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【完全版】Docker開発コンテナからGitHubへSSH接続するまでの道のり

Posted at

🎯 はじめに

Docker開発コンテナから git push したら「Permission denied (publickey)」
VSCode 上ではファイルは見えるのに、なぜか .ssh が使われてない…?

この記事は、そんな状況を実際に解決した一連の流れを記録した完全なハマりポイント集&解決まとめです。


📌 ゴール

  • 開発コンテナから GitHub に SSH で安全に接続できるようにする
  • git pullgit push をシームレスに行えるようにする
  • SSH鍵を GitHub に登録し、適切にマウント&接続確認する

🛠 環境

  • ホスト:WSL2 / Linux
  • コンテナ:Docker(Node.jsベース)
  • GitHub:SSH接続を使用
  • VSCode:DevContainer利用

1. 鍵の生成(ホスト側)

まずはホストPCで SSH鍵を作成:

ssh-keygen -t ed25519 -C "your-email@example.com"

プロンプトにはそのままEnterでOK(保存先は ~/.ssh/id_ed25519


2. 公開鍵のGitHub登録

生成された公開鍵を確認:

cat ~/.ssh/id_ed25519.pub

その出力内容を GitHub の SSHキー設定に貼り付けて保存
👉 https://github.com/settings/keys


3. Dockerコンテナへ鍵をマウント

# docker-compose.dev.yml の一部
volumes:
  - ~/.ssh:/root/.ssh:ro

これにより、ホスト側の .ssh がコンテナ内の /root/.ssh にマウントされる。

私はここで、マウント元を間違えていたため解決に時間がかかりました。

(~/でroot直下を指定する必要があります。app直下ではないことを理解するまでに時間がかかりました。。)


4. パーミッション問題の対処

秘密鍵や設定ファイルのパーミッションが緩いと、SSHは読み込みを拒否します。

chmod 600 ~/.ssh/id_ed25519
chmod 600 ~/.ssh/config         # (あれば)
chmod 700 ~/.ssh                # ディレクトリ自体

※ VSCode上でマウント先が見えなくても、/root/.ssh/ に鍵があればOKです。


5. SSH接続のテスト(コンテナ内)

コンテナに入って以下を実行:

ssh -T -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null git@github.com

✅ 成功すると:

Hi your-github-username! You've successfully authenticated, but GitHub does not provide shell access.

6. よくあるハマりポイントと解決

問題 原因 解決策
.ssh/configBad owner or permissions 所有者が root でない or パーミッションが緩い マウントせずコンテナ内で作成 or chown root:root
Permission denied (publickey) 鍵が存在しない or 形式が壊れている ssh-keygen で再生成、マウント確認
/app/.ssh に鍵が見えない マウント先は /root/.ssh ls /root/.ssh で確認
libcrypto エラー 鍵の内容が壊れている ssh-keygen -y -f で検証する or 再生成

✅ 最終確認:git push / pull

git remote -v
git push origin your-branch-name

何のエラーもなく成功すれば SSH接続&GitHub連携は完璧です。


🎉 まとめ

  • .ssh はホストの ~/.ssh/root/.ssh にマウントするのが正解
  • config ファイルは便利だが必須ではない
  • 所有者やパーミッションを必ずチェック
  • 鍵が壊れていないか、Base64構造を見て検証できる

🙌 最後に

このプロセスを通じて「DockerとSSH、そしてGitHub」の接続を完全に理解できました。
迷ってる人は、まずは鍵を正しく作ってマウント先を確認するだけでも世界が変わるはずです。

1
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?