【PR】を含みます。

プログラミング

【WSL】GitHubへSSHでpushする手順

WSL GitHubへSSHでpushする手順

この記事では、WSL(Ubuntu)からGitHubへSSH認証でpushできる状態にするまでの手順をまとめます。

SSH鍵の作成GitHubへ登録接続テストgit init初回pushまで、コピペで進められます。

作業環境
  • WSL2(Ubuntu想定)
  • Windows 上のWSLで作業している
  • GitHubのユーザー登録は完了済み

GitHubのアカウントの作成方法は以下の記事で紹介しています。

あわせて読む
GitHub アカウントの作成方法

【GitHub】アカウントの作成方法

GitHubは、ソフトウェア開発者にとって欠かせないプラットフォームです。 オープンソースプロジェクトの管理や、チームでの共同開発を行えるオンラインプラットフォームです。 本記事では、GitHubのア ...

この記事のゴール
  • WSL上でSSH鍵を作成
  • GitHubに公開鍵を登録
  • ssh -T git@github.comで疎通確認
  • git initしたプロジェクトを GitHub にpushできる状態にする

事前準備(Git・ユーザー情報設定)

Gitがインストールされているか確認

  1. スタートメニューから「Ubuntu」を起動

    検索窓に「Ubuntu」と入力 →「Ubuntu」をクリック

    スタートメニューから「Ubuntu」を起動
  2. Gitのバージョンを確認する

    git が使えるか確認します。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git --version

    例:git version 2.xx.x のように表示されればOKです。

  3. (Gitが入っていない場合)Gitをインストールする

    上のコマンドで git: command not found と出た場合は、以下でGitをインストールします。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    sudo apt update
    sudo apt install -y git
    • sudo を実行すると、パスワード入力を求められる場合があります。
    • このパスワードは Ubuntu(WSL)のユーザー作成時に設定したパスワード です(GitHubのパスワードではありません)。
    • 入力中は画面に 文字が表示されません(●も出ない)ので、そのまま入力して Enter を押してください。
    • パスワードを忘れた場合は、WSLのユーザー設定(パスワード)を確認しましょう。
  4. インストール後にもう一度確認する

    インストールできたら、再度バージョンを確認します。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git --version

Gitのユーザー名/メールを設定

  1. ホームディレクトリへ移動

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    cd ~
  2. ユーザー名の登録

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git config --global user.name 'あなたの表示名'
  3. メールアドレスの登録

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git config --global user.email 'あなたのメールアドレス'

Gitのユーザー名/メールアドレスの登録確認

  1. 以下コマンドを入力し、設定できたか確認する

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git config --global --get user.name
    git config --global --get user.email

SSH認証の設定(鍵作成〜疎通確認)

SSH鍵を作成

  1. SSH鍵を作成する

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    ssh-keygen -t ed25519 -C 'あなたのメールアドレス'
  2. 保存先(Enter file in which to save the key (/home/〇〇〇/.ssh/id_ed25519):)が表示されるので「Enter」キーを押下
  3. パスフレーズの設定(Enter passphrase (empty for no passphrase):)が表示されるので「Enter」キーを押下

    ※パスフレーズは設定してもOK/不要なら Enter で空でもOK(運用方針次第)

  4. 再度パスフレーズの入力を求められる(Enter same passphrase again:)ので、「Enter」キーを押下

ssh-agentを起動して鍵を登録

  1. ssh-agentを起動

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    eval "$(ssh-agent -s)"
  2. 鍵を登録

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    ssh-add ~/.ssh/id_ed25519

登録確認

  1. 登録できたか確認

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    ssh-add -l

    id_ed25519が一覧に出ればOKです。

    • 注意:ssh-agentはターミナルを閉じたりWSLを再起動すると、登録した鍵が消えることがあります。
    • その場合はssh-add -lで確認し、一覧に無ければeval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519をやり直してください。

GitHubに公開鍵を登録

  1. 公開鍵をコピー

    以下コマンドを入力し、公開鍵をコピーします。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    cat ~/.ssh/id_ed25519.pub
    id_ed25519コピー
  2. GitHubにログインし、右上のプロフィールアイコン(ユーザーメニュー)をクリック
    GitHubに公開鍵を登録説明画像1
  3. 「Settings」をクリック
    GitHubに公開鍵を登録説明画像2
  4. 「SSH and GPG keys」をクリック
    GitHubに公開鍵を登録説明画像3
  5. 「New SSH key」をクリック
    GitHubに公開鍵を登録説明画像4
  6. 「Title」と「Key」を入力し、「Add SSH key」をクリック

    ※「Title」は任意のタイトルを入力してください。

    ※「Key」には先程コピーした公開鍵を貼り付けます。

    GitHubに公開鍵を登録説明画像5

GitHubへの接続テスト

  1. 以下コマンドを入力し、GitHubへの接続をテストします。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    ssh -T git@github.com
  2. 初回のみ、「yes」と入力し、「Enter」を押下
    GitHubへの接続テスト説明画像6
  3. 以下のように表示されればSSH認証はOKです。
    GitHubへの接続テスト説明画像7

リモートリポジトリのURLを設定

GitHubで新規リポジトリを作成

  1. GitHubにログインし、「ハンバーガーメニュー」をクリック
    GitHubで新規リポジトリを作成説明画像1
  2. 「Repositories」をクリック
    GitHubで新規リポジトリを作成説明画像2
  3. 「New repository」をクリック
    GitHubで新規リポジトリを作成説明画像3
  4. 「Repository name」を入力し、「Choose visibility」で「Private」を選択し、「Create repository」をクリック

    ※「Repository name」は任意の名前を入力してください。(例:my-project)

    ※「Choose visibility」で「Private」を選択すると非公開になります。(公開する場合は「Public」を選択)

    • ローカルを先に作成した場合は、GitHub側は README / .gitignore / License を付けずに空で作成 するのが安全です。
    • READMEを付けて作ると、初回push時に「fetch first」などで弾かれることがあります。
    GitHubで新規リポジトリを作成説明画像4
  5. リモートリポジトリのURLをコピー

    リモートリポジトリのURLをコピーします。(後ほど、リポジトリのURLを設定するために使用します。)

    GitHubで新規リポジトリを作成説明画像5

remote(origin)をSSH形式で追加

  1. プロジェクトのルートディレクトリに移動

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    cd ~/projects/my-project
  2. リポジトリの初期化

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git init
  3. リモートリポジトリのURLを設定

    先程コピーしたリモートリポジトリのURLを設定します。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git remote add origin 先程コピーしたリモートリポジトリのURL
  4. リモートリポジトリのURLを確認

    リモートリポジトリのURLを確認します。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git remote -v
  5. 以下のように表示されればSSH形式で追加できています
    GitHubで新規リポジトリを作成説明画像8

初回コミットとpush

初回コミットを作成

  1. プロジェクトのルートディレクトリへ移動

    ※まだ移動していない場合のみ実行してください。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    cd ~/projects/my-project
  2. 変更をステージングする

    まずはGitに追加したいファイルをステージングします。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git add .
  3. 初回コミットを作成する

    コミットメッセージは任意ですが、最初は「Initial commit」がよく使われます。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git commit -m 'Initial commit'

ブランチ名を確認

  1. 現在のブランチ名を確認する

    環境によって master または main になっています。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git branch

GitHubへpushする

  1. ブランチが master の場合

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git push -u origin master
  2. ブランチが main の場合

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git push -u origin main
  3. (任意)master を main に変更したい場合

    ブランチ名を main に統一したい場合は、以下を実行します。

    Copyをクリックするとコピーできます。

    Ubuntu
    Copy
    git branch -m main
    git push -u origin main

push が完了したら、GitHubのリポジトリページを更新してファイルが反映されているか確認してください。

よくあるエラーと対処法

Permission denied (publickey)

SSH鍵がうまく使えていないときに出ます。原因として多いのは以下です。

  • 公開鍵をGitHubに登録していない
  • ssh-agentに鍵を追加できていない
  • 複数鍵があり、想定していない鍵を出している
  • SSH鍵のパーミッションが間違っている

対処法としては以下のようになります。

  • 公開鍵をGitHubに登録する
  • ssh-agentに鍵を追加する
  • 複数鍵があり、想定していない鍵を出している場合は、ssh-agentに追加した鍵を削除する
  • SSH鍵のパーミッションが間違っている場合は、SSH鍵のパーミッションを修正する

以下コマンドを入力し、SSH鍵がうまく使えているかを確認します。

ログ内でOffering public key: ...id_ed25519のように、想定の鍵を提示しているか確認してください。

Copyをクリックするとコピーできます。

Ubuntu
Copy
ssh -vT git@github.com

remote origin already exists

originがすでにある場合は、削除して作り直します。

Copyをクリックするとコピーできます。

Ubuntu
git remote remove origin
git remote add origin git@github.com:<ユーザー名>/<リポジトリ名>.git

まとめ

WSLからGitHubへpushするなら、SSH鍵方式がいちばん安定です。

一度設定してしまえば、以降はパスワード入力なしでpushできるようになります。

  • Gitの作者情報(user.name / user.email)をホームディレクトリでグローバル設定
  • SSH鍵を作って GitHub に登録
  • ssh -T git@github.comで接続テスト
  • git remote add origin git@github.com:...でSSH remote設定
  • git add / git commitで初回コミット
  • git push -u origin main/masterで初回push

-プログラミング
-, , ,