🔐

WindowsでGitHubにSSH接続する最小の手順2021年版

2021/11/12に公開

WSL (Windows Subsystem for Linux)でもPowerShellでもGitHubにSSH接続できるようにして、パスワードレスに接続したかったが、微妙に古い情報しかなかったので。

前提

  • GitHubアカウントを持っている
  • Git for windowsインストール済み
  • Windows 10 1803+ (OpenSSHがインストールされているバージョン)

SSH接続の設定手順

PowerShell
cd ~
ssh-keygen -t ed25519 -f .ssh/github
echo "
Host github
  HostName github.com
  IdentityFile ~/.ssh/github
  User git
" | Out-File -Append -NoNewline -Encoding ascii .ssh/config
cat .ssh/github.pub | clip

これをPowerShellで実行すると、途中でSSH鍵ファイルのパスフレーズを聞かれる。

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):  ←パスフレーズの入力
Enter same passphrase again:                 ←パスフレーズの再入力
(略)

入力してもいいし、Enterでスキップしてもよい。

実行後、SSH鍵情報がクリップボードに入っているので、それをAdd new SSH keysに登録する。

確認

ssh -T github

と実行して

Hi {GitHubユーザ名}! You've successfully authenticated, but GitHub does not provide shell access.

のように表示されれればSSHの設定としてはOK。

説明

  1. OpenSSHのユーザ設定ディレクトリ(%USERPROFILE%\.ssh\)にgithub(秘密鍵)と github.pub(公開鍵)を作成する。
  2. 公開鍵をGitHubに登録する。

やっていることはこれだけ。

自動的にSSH接続になるようにするには

もし既存のクローンが手元にあってリモートURLがhttpsになっている場合、git remote set-url github:{パス}でURLを書き換えればSSH接続となるが、自動的にSSH接続に置き換えることもできる。

以下を実行すると全てのGitHubリポジトリへの接続がSSHとなる。

git config --global url.github:.insteadOf https://github.com/

WSLでも同じ設定を使うようにするには

Gitの設定はWindows側と完全に同じ設定を使うようにするのが一番簡単。

bash
cd ~
ln -s /mnt/c/Users/{ユーザ名}/.gitconfig

SSHの設定は権限の兼ね合いでシンボリックリンクによる共有はできないので、単にコピーする。

bash
cd /mnt/c/Users/{ユーザ名}/.ssh
cp github{,.pub} ~/.ssh
chmod 400 ~/.ssh/github
chmod 644 ~/.ssh/github.pub
echo '
Host github
  HostName github.com
  IdentityFile ~/.ssh/github
  User git
' >> ~/.ssh/config

Discussion