LoginSignup
1
4

More than 3 years have passed since last update.

GitHubのSSHKey作成で悩んだ話

Last updated at Posted at 2018-03-10

概要

GitでHTTPS通信をしていると
よくGitHubのユーザ名とパスワードを聞かれて
SSHで対応しようとしたら
ハマったので備忘録の為にも書き込んでおこうと思いました。

※2018/10/14追記
疎通確認を忘れていたのと
デバッグの疎通確認も知ったので追記します。

使用環境

Windows10
Git version 2.16.2.windows.1

悩んだ点

まずSSHKeyの生成方法を理解していなかった
なのでGitのssh-keygenの実行ファイルの場所が分からない
勝手にWindowsがBOM付けるから面倒ごとが増えた

では、ハマってしまった経験を生かして
次にやっても難なくできるように手順を書き込んでおきます

事前準備

WindowsにGitをインストールしておいてください。
参考になるページを見つけたので載せておきます。
自分用 Git For Windowsのインストール手順

SSHKeyを生成

いつのバージョンか知らないのですが
SSHKeyがホームディレクトリで生成できたような記事を見つけましたが
自分の環境では通らなかったので
C:\Program Files\Git\usr\binにssh-keygenの実行ファイルがある前提で話をします。

WindowsPowerShell
PS C:\Users\[ユーザ名]> cd 'C:\Program Files\Git\usr\bin\'

PS C:\Program Files\Git\usr\bin> .\ssh-keygen -t rsa -b 4096 -f "~/.ssh/id_rsa" -N ""
Generating public/private rsa key pair.
Your identification has been saved in [ユーザディレクトリ]/.ssh/id_rsa.
Your public key has been saved in [ユーザディレクトリ]/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:[] [デフォルトコメント]
The key's randomart image is:
+--[ RSA 4096]----+
|        略       |
+-----------------+

2018/6/17更新
鍵の長さがデフォルト鍵長の2048bitで生成していたため
-b 4096を追記しました。

2019/1/10更新
ファイル名の指定を追加しました。

2019/08/30更新
ワンライナーに対応しました。

-Cオプションを削除しました。
理由として必須ではないからです。

-Nオプションを追記しました。
パスフレーズの入力をカットします。

[メールアドレス]はGitで使うメールアドレスを指定してください
恐らくpush先で使うからだと思うのですが
知っている方いたらコメントいただけたらと思います。
追記いたしますので。
サイトによってはただのコメントであったり
push先(で使っている)のメールアドレスだったりとか
バラバラなので...

上記は以前書いていたものですが
-Cオプションはデフォルトでユーザ名を入れるようです。
私は問題ないのですがよく見かける例で行くと
メールアドレスを指定するようなので
-C "[メールアドレス]"と追記してください。

-f [ファイル名]
デフォルトの公開鍵でいうid_rsa.pubid_rsaの部分です。
正確にはそれまでのファイルパスも含みます。
相対パスであればユーザディレクトリに続くパスから指定します。
ちなみに省略可能です。
省略するとどこに鍵を保存するか聞かれます。
そのままEnterを押下すると上記の例でのパスで保存されます。

パスフレーズですが
上記例では-Nオプションで入力していません。
入力する場合は引数に指定するか
-Nオプションを削除し対話式での入力を行ってください。

そうするとSSHKeyのイメージ(?)が表示されますので
これで生成はできました!

GitHubに公開鍵を預ける

預けることができればSSH通信ができるようになります!
そこでも詰まった私ですが...

まずホームディレクトリに戻ってもらいます。

WindowsPowerShell
PS C:\Program Files\Git\usr\bin> cd ~

そして生成されたSSHKeyの場所まで行きます

WindowsPowerShell
PS C:\Users\[ユーザ名]> cd .\.ssh\

次は生成された公開鍵をクリップボードにコピーします

WindowsPowerShell
PS C:\Users\[ユーザ名]\.ssh> cat .\id_rsa.pub

catでGet-Contentが呼ばれるはずですが
使えないようでしたらcatをGet-Contentに置き換えてください。

表示された文をコピーしてください。

※ちなみにワンライナー
PowerShell:WindowsPowerShell
PS C:\Users\[ユーザ名]\.ssh> cat ~\.ssh\id_rsa.pub

そして次はGitHubに移ります

SSH and GPG keys
恐らくここから飛べるのではないかなと思います。
そこのNew SSH Keyボタンを押下してください

スクリーンショット (15).png
次にタイトル(機種名が判別しやすいと思います)と
公開鍵のファイルの内容を入力します。
先ほどテキストエディタに張り付けてコピーし直してもらったものです
ちなみにBOM入りだと
スクリーンショット (16).png
という風に怒られました
この厳格さのおかげで秘密鍵を登録してしまうのも防げるとか...

あとはAdd SSH Keyを押下するだけです!
その後は自由にpushするなりpullするなりどうぞ!

疎通確認

最初に書いたときには疎通確認を忘れていました。
確認もせずに何をしているのか・・・
ということで確認します。

WindowsPowerShell
PS C:\Users\[ユーザ名]\.ssh> ssh -T git@github.com

これだけですね。
実行するとこんな感じの文が出ると思います。

The authenticity of host 'github.com (IPアドレス)' can't be established.
ECDSA key fingerprint is SHA256:[略].
Are you sure you want to continue connecting (yes/no)? 

yesと入力してください。

Warning: Permanently added 'github.com,IPアドレス' (ECDSA) to the list of known hosts.
Welcome to GitHub, [ユーザ名]!

完了です。
お疲れさまでした。

参考にしたページ

WindowsでSSHの鍵を作る
SSHの公開鍵を作成しGithubに登録する手順

2018/6/17更新時
お前らのSSH Keysの作り方は間違っている

2019/08/30更新時
ssh-keygenをパスフレーズの確認なしで作成する

1
4
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
4