【Github】Github に ssh 接続するには

■ はじめに

https://dk521123.hatenablog.com/entry/2019/07/18/234652

の続き。
今回は、Githubにssh接続でクローンできるようにする。

以下のサイトがわかりやすかった。

http://monsat.hatenablog.com/entry/generating-ssh-keys-for-github

Githubへの接続プロトコル

https://qiita.com/chroju/items/67da13c672efcd2bc787

が参考になる。
Github は、「【1】https」を推奨しているが、現場によって、非推奨だったりする。

【A】https(例「https://github.com/XXXXXX/YYYYY.git」)
【B】git
【C】ssh (例「git@github.com:XXXXXX/YYYYY.git」)<< 今回は、これ

■ 設定環境例

OS : Windows10
Git : git version 2.23.0

★前提条件としてGitがインストールされていること★

■ 設定手順

【1】秘密鍵、共通鍵を作成する
【2】Githubに作成した共通鍵を組み込む
【3】設定ファイルを作成
【4】確認として:git clone を行う

【1】秘密鍵、共通鍵を作成する

https://dk521123.hatenablog.com/entry/37623281

でも行ったが、Windows / Git Bash で行う。

[1-1]  右クリックし、[Git Bash Here]を選択し、Git Bashを起動する
[1-2] コマンド「ssh-keygen -t rsa  -C "your_email@gmail.com"」を入力し、秘密鍵、共通鍵を作成する
 + id_rsa ... 秘密鍵
 + id_rsa.pub ... 共通鍵 (公開鍵)

コマンド例

ssh-keygen -t rsa  -C "your_email@gmail.com"

# t "鍵の種類"
# -C "コメント文(e-mailを入力)"

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/UserName/.ssh/id_rsa): (鍵ファイルの設定場所。Enterキー押下)
Created directory '/c/Users/UserName/.ssh'.
Enter passphrase (empty for no passphrase): (パスフレーズ入力)
Enter same passphrase again: (同じパスフレーズ再入力)

【2】Githubに作成した共通鍵を組み込む

[2-1] Git Bash で、以下のコマンドを入力し、
         共通鍵の内容をクリップボードにコピー
~~~~~
clip < C:/Users/UserName/.ssh/id_rsa.pub
~~~~~

[2-2] Github にブラウザでアクセスし、ログインする

https://https://github.com/

[2-3] 右上のユーザのアイコンを選択し、[Settings]-[SSH And GPG keys]を選択
[2-4] 「New SSH Key」ボタン押下
[2-5] 以下を入力し、「Add SSH Key」ボタン押下
 + Title:任意の文字列
 + Key : [2-1]でコピーした共通鍵の内容(例:ssh-rsa AAB...)

【3】設定ファイルを作成

不要かもしれないが、「~/.ssh/config」を作成しておく

設定ファイル記述例(c:/Users/UserName/.ssh/config)

Host github
  HostName github.com
  IdentityFile c:/Users/UserName/.ssh/id_rsa
  User github_user_name

【4】確認として:git clone を行う

[4-1] github で対象のページにアクセスする
[4-2] 「Clone or Download」ボタン押下
[4-3] 右上の「Use SSH」リンク押下
[4-4] 「git@github.com:XXXXXX/YYYYY.git」をコピーする
[4-5] Git Bash の画面で git clone コマンドを入力する
 ⇒ 最後に「done.」が表示され、Github上のファイル群が存在していることを確認

コマンド例

git clone git@github.com:XXXXXX/YYYYY.git

Cloning into 'YYYYY'...
The authenticity of host 'github.com (ZZZ.ZZZ.ZZZ.ZZ)' can't be established.
RSA key fingerprint is SHA....
Are you sure you want to continue connecting (yes/no/[fingerprint])? (「yes」を入力)
Enter passphrase for key '/c/Users/UserName/.ssh/id_rsa': (パスフレーズを設定した場合は、それを入力)

■ おまけ1:Proxy設定

大抵の現場では、Proxyサーバが設置されており、
そのための設定を記す

対処案:設定ファイル「.ssh/config」に設定を追加する

「【3】設定ファイルを作成」で作成した設定ファイルにプロキシサーバに接続する設定を追加する

設定ファイル記述例(c:/Users/UserName/.ssh/config)

Host github
  HostName github.com
  IdentityFile c:/Users/UserName/.ssh/id_rsa
  User github_user_name
  ProxyCommand connect.exe -H <プロキシサーバのアドレス>:<ポート> %h %p # ★この行を追加★

■ おまけ2:TortoiseGit で接続する

https://dk521123.hatenablog.com/entry/2019/09/27/153937

で取り扱ったGitクライアントソフト「TortoiseGit」でクローンできるように設定する

設定手順

[1] 右クリックし、[TortoiseGit]-[Settings]-[Network] を選択
[2] 「SSH」の「SSH client」欄をGitのssh.exe に変更する
~~~~~
【デフォルトでインストールした場合】
修正前:C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
修正後:C:\Program Files\Git\usr\bin\ssh.exe
~~~~~
[3] ファイルを落としたいフォルダ配下で、右クリックし、[Git Clone] を選択
[4] URLに「git@github.com:XXXXXX/YYYYY.git」を入力し、「OK」ボタン押下
 ⇒ Github上のファイル群が存在していることを確認

参考文献

http://monsat.hatenablog.com/entry/generating-ssh-keys-for-github
https://qiita.com/godgarden/items/28bc299b35c5c60a5877
https://qiita.com/kawahara_hiroyuki/items/3ad35c548d1007c12109

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Git クライアントソフト
https://dk521123.hatenablog.com/entry/2019/09/27/153937
SSH公開鍵認証方式
https://dk521123.hatenablog.com/entry/37623281