11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows上でVSCode remote containersを使っている場合にコンテナ内からsshでGitHubに接続する方法

Last updated at Posted at 2021-02-23

普段Windows上で開発していて、GitHubに接続する際はssh認証を使っている人が、VSCode remote containerでcontainer内からGitHubに接続したいときのメモです。

環境

備考
OS Windows10
VSCode 1.53.2
Remote - Containers v0.158.0
docker desktop for windows 3.1.0
Git Bash git version 2.20.1.windows.1

また、Docker Desktop WSL 2 バックエンドを使っています。

前提

【Git】Windows環境でGitHubにSSH接続してコミットするまでの手順などを参考にC:\Users\ユーザー名\.ssh\id_rsaなどにすでに秘密鍵を作成済みで、GitHubに公開鍵を設定済みだとします。

また、GitHubへ接続できているかはGitBash上で次のように確認できます。

$ ssh -T git@github.com
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell acces

ssh-agent

ssh-agentを利用して、安全にSSH認証を行う

ここでも書かれているように、サーバー側、今回で言えばContainer内に秘密鍵を置くのは危険です。こんなときはssh-agentを使います。

公式リファレンス、Developing inside a Container - Using SSH keysにかかれていることをやります。

ssh-agentを起動する

Windows上のpowershellを管理者権限で実行し、ssh-agentを起動します。さらにWindows起動時に自動で立ち上がるようにしています。

Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
# 起動できているかの確認
Get-Service ssh-agent

ssh-agentに秘密鍵を登録する

Windows上のpowershellで普段GitHubに接続するときに使っている秘密鍵をssh-agentに登録します。

$ ssh-add C:\Users\ユーザー名\.ssh\id_rsa
# 登録できているかの確認
$ ssh-add -l

Container上で接続確認

これでContainer内からssh接続ができるようになったと思います。Container内のターミナルで、

$ ssh-add -l
# Windows上で登録した秘密鍵がContainer内で認識できているか確認。ハッシュ値が表示されるはず。
$ ssh -T git@github.com
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell acces

これでContainer内からgit pushなどができるようになったと思います。

11
7
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
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?