GitHubのSSH公開鍵方式でリポジトリにパスワードレスでpushする

2021/08/14に公開

概要

通常(HTTPS)のリポジトリクローンでは、変更をpushする時などに、毎回パスワード要求されるので面倒です。SSH Key認証によるクローンならパスワードを入力する手間が省けます。ただし、sshでクローンするには初期設定があるのでその方法を説明します。ここではWindows10環境で試しています。

鍵を作成する

まず、鍵を作ります。鍵を作るには、Windows Powerhellを開き下記のコマンドを実行します。(Mac,Linuxでもコマンドは一緒です)

$ ssh-keygen -t rsa -b 4096
# 色々と文字が出てきますがEnterを3回押します。

これで鍵がC:¥ユーザー¥ユーザー名¥.ssh¥に生成されます。(MacとLinuxの場合は、~/.ssh/)
鍵は2個あり、それぞれは以下の意味になります。

  • id_rsa : 秘密鍵(公開カギとセットです。秘密なので他人には渡してはいけません。)
  • id_rsa.pub : 公開鍵(秘密鍵とセットです。こちらをgithubに登録することでsshクローンできます。)

この鍵は作成したPCに紐づいていますので、別のPCで作業する場合は、再度そのPCで鍵を作成し、下記の手順を行う必要があります。

GitHubへの公開鍵登録

作成した公開鍵をGitHubに登録します。
自分のgithubアイコンをクリックして、出てきたウインドウからSettingsをクリックします。

左側のSSH and GPG keysをクリックします。次に右上のNew SSH keyをクリックします。

このページのTitleにどのPCからなのか分かるように名前を入力します。
次に先ほど生成した鍵の内、id_rsa.pubをエディタで開き、Keyの部分にコピペします。最後にAdd SSH keyボタンをクリックします。

HTTPSとsshのクローンではURLが異なっているので注意が必要です。

Windows Powershellを起動し、下記のコマンドを実行します。
ここでは、新規でディレクトリを作り、その中にクローンしています。

# Workディレクトリを作成
$ mkdir Work
# Workディレクトリの中に移動
$ cd Work
# sshでのgitクローン
$ git clone git@github.com:nkys39/zenn-doc.git

これでクローンした手元のローカルリポジトリからGitHub上のリモートリポジトリにPushする際にパスワードを要求されなくなります。

以上です。

Discussion