[GitHub] SSH認証カギを設定する

GitHub で SSH認証カギを設定する手順を記載します。

 

 

 

1. Linux(Ubuntu)の場合

[概要]

Git を使うために、必ずしも必要というわけではないのですが、SSH認証カギを生成・登録して使用すると良い場合が多々あります。
GitHub で SSH認証カギを使用するための手順などを記載します。

 

[環境]

OS: (1) WSL/Ubuntu, 20.04
  (2) VirtualBox/Ubuntu, 20.04
ベースOS : Windows10 home, Version 2003

 

 

1-1. GitHub にアカウントを作成

https://github.com/ にアクセスしてアカウントを作ってください。

詳細は割愛します。

 

 

1-2. 既に公開鍵が作成されていないかを確認

SSH認証鍵はホームフォルダ下の ".ssh" フォルダに作成されます。
下記コマンドで .ssh フォルダおよびフォルダ内のファイルを確認することで、既に登録されているSSH認証鍵の状態を確認できます。

 

$ ls ~/.ssh

 

 

1-3. SSH認証鍵 - 公開鍵と秘密鍵を作成

複数のSSH認証鍵を登録することを想定して、GitHub専用フォルダに鍵を登録する手順として記載します。

下記手順でSSH認証鍵をホーム配下の .ssh/github フォルダ内に生成します。

 

$ mkdir ~/.ssh
$ cd ~/.ssh
$ mkdir github
$ cd github
$ ssh-keygen -t rsa -C hoge@foo.com              <--- "hoge@foo.com" は自分のメールアドレス
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hidetoshi/.ssh/id_rsa):/home/hidetoshi/.ssh/github/id_rsa
                                                 <----- "github"フォルダへ修正してEnter
Enter passphrase (empty for no passphrase):      <-----Enterを押す
Enter same passphrase again:                     <-----Enterを押す
Your identification has been saved in /home/hidetoshi/.ssh/github/id_rsa.
Your public key has been saved in /home/hidetoshi/.ssh/github/id_rsa.pub.
The key fingerprint is:
0f:19:40:a4:36:b4:89:42:b0:e2:f4:b2:5b:ce:85:39 mail@mail
The key's randomart image is:
+--[ RSA 2048]----+
| o  .   .  o  +  |
|.  .  o  +   .   |
|+..   *    .     |
|   + . .. .   o  |
|       o  .   S  |
| o  o        o   |
|    .    E   . . |
|         =     o |
| . o             |
+-----------------+
$

 

これで公開鍵と秘密鍵が作成できました。

 

 

1-4. ~/.ssh/config にSSH鍵を設定

config ファイルに設定を書いていきます。無ければ以下のコマンドで作ることができます。

 

$ vi ~/.ssh/config

 

config ファイルに以下の情報を書き込みます。

["config"]

Host github.com
  HostName github.com
  IdentityFile ~/.ssh/github/id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes

 

["config" (port 443 環境)]

ポート番号 22 を遮断している環境で 443 を使える場合、こちらの設定を使用してみてください。

Host github.com
  HostName ssh.github.com 
  IdentityFile ~/.ssh/github/id_rsa
  User git
  Port 443
  TCPKeepAlive yes
  IdentitiesOnly yes

 

["config" プロキシ環境下]

proxy 環境下ではこちらのサンプルを参照ください。"ProxyCommand" の行を追加しています。

Host github.com
  HostName github.com
  IdentityFile ~/.ssh/github/id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes
  ProxyCommand /usr/bin/corkscrew proxy.hoge.co.jp 8080 %h %p

 

 

NOTE

私の環境では corkscrew がインストールされていなかったので、
sudo apt install corkscrew
でインストールしました。

 

config 設定は以上です。

 

 

1-5. GitHub へ公開鍵を設定

GitHub にアクセス後、右上のユーザーアイコンを選択すると「Settings」が見えるのでこれをクリックします。

メニューから "Settings" をクリックします

 

そして画面左側のメニューから "SSH and GPG keys" をクリックします。

"SSH and GPG keys" をクリック

 

そして "New SSH key" をクリックします。

"New SSH key" をクリック

 

するとこんな画面を表示します。

"SSH keys / add new" 画面

 

 

続いて、以下のコマンドで公開鍵を表示し、「ssh-rsa ~ 自分のメールアドレス」をコピーします。

 

$ cat ~/.ssh/github/id_rsa.pub
ssh-rsa
**************************************************************************
**************************************************************************
mail@mail

 

 

"Key" の欄にコピーした公開鍵を張り付けます。

"Title" は自分がどの公開鍵かわかる名称を付けます。私は端末名を記入してみました。

複数の端末を持つ場合も共通の鍵を使用するのではなくそれぞれ異なる鍵を生成して使用するほうが良いと思います。

 

タイトル、公開鍵を設定した様子

 

「Add SSH key」ボタンをクリックしたら設定は以上で完了です。

 

 

1-6. 接続できるか確認

"ssh -T" コマンドで接続できるかを確認します。
以下のように表示されればOKです。

 

$ ssh -T git@github.com
Hi hidetoshi-kinoshita! You've successfully authenticated, but GitHub does not provide shell access. 
$

 

 

1-7. git clone

リモートで作成済みのリポジトリを clone してみることで最後の動作確認としてみます。
コマンドは下記の通り先頭を "git@github.com:" とします。

$ git clone git@github.com:<ユーザ名>/<リポジトリ名>.git

 

git clone した例

 

 


 

2. Windowsの場合

[概要]

Git を使うために、必ずしも必要というわけではないのですが、SSH認証カギを生成・登録して使用すると良い場合が多々あります。
GitHub で SSH認証カギを使用するための手順などを記載します。

 

[環境]

OS : Windows10 home, Version 2003

 

 

2-1. GitHub にアカウントを作成

https://github.com/ にアクセスしてアカウントを作ってください。

詳細は割愛します。

 

 

2-2. 既に公開鍵が作成されていないかを確認

SSH認証鍵はホームフォルダ下の ".ssh" フォルダに作成されます。
下記コマンドで .ssh フォルダおよびフォルダ内のファイルを確認することで、既に登録されているSSH認証鍵の状態を確認できます。

 

> dir %homedrive%%homepath%\.ssh

 

 

2-3. SSH認証鍵 - 公開鍵と秘密鍵を作成

複数のSSH認証鍵を登録することを想定して、GitHub専用フォルダに鍵を登録する手順として記載します。

下記手順でSSH認証鍵をホーム配下の .ssh/github フォルダ内に生成します。

 

> %homedrive%
> cd %homepath%
> mkdir .ssh
> cd .ssh
> mkdir github
> cd github
> ssh-keygen -t rsa -C hoge@foo.com               <--- "hoge@foo.com" は自分のメールアドレス
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\ユーザ名/.ssh/id_rsa): c:\users\ユーザ名/.ssh/github/id_rsa
                                                  <----- "github"フォルダへ修正してEnter
Enter passphrase (empty for no passphrase):       <-----Enterを押す
Enter same passphrase again:                      <-----Enterを押す
Your identification has been saved in c:\Users\ユーザ名/.ssh/github/id_rsa.
Your public key has been saved in c:\Users\ユーザ名/.ssh/github/id_rsa.pub.
The key fingerprint is:
SHA256:sxNXQxxEEMuuB+zYuX95RVRKkpe4zn3zRbDe/88z+nQ hoge@foo.com
The key's randomart image is:
+---[RSA 2048]----+
| o**+..o|
| . o+o+..|
| o oo.+ |
| . . .... o|
| S oo o + |
| + O o o.=|
| . B . . +E|
| + o o++|
| .... oo.O|
+----[SHA256]-----+

C:\Users\ユーザ名\.ssh\github>

 

これで公開鍵と秘密鍵が作成できました。

 

 

2-4. ~/.ssh/config にSSH鍵を設定

config ファイルに設定を書いていきます。無ければ以下のコマンドで作ることができます。

 

> notepad %homedrive%%homepath%\.ssh\config

 

 

config ファイルに以下の情報を書き込みます。

["config"]

Host github.com
  HostName github.com
  IdentityFile C:\Users\[ユーザ名]\.ssh\github\id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes

 

["config" (port 443 環境)]

ポート番号 22 を遮断している環境で 443 を使える場合、こちらの設定を使用してみてください。

Host github.com
  HostName ssh.github.com 
  IdentityFile C:\Users\[ユーザ名]\.ssh\github\id_rsa
  User git
  Port 443
  TCPKeepAlive yes
  IdentitiesOnly yes

 

["config" (プロキシ環境)]

proxy 環境下ではこちらのサンプルを参照ください。

”ProxyCommand” の行を追加しています。

Host github.com
  HostName github.com
  IdentityFile C:\Users\[ユーザ名]\.ssh\github\id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes
  ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -H http://proxy.hoge.co.jp:8080 %h %p

 

 

config の設定は以上です。

 

 

2-5. GitHub へ公開鍵を設定

GitHub にアクセス後、右上のユーザーアイコンを選択すると「Settings」が見えるのでこれをクリックします。

メニューから "Settings" をクリックします

 

そして画面左側のメニューから "SSH and GPG keys" をクリックします。

"SSH and GPG keys" をクリック

 

そして "New SSH key" をクリックします。

"New SSH key" をクリック

 

するとこんな画面を表示します。

"SSH keys / add new" 画面

 

 

以下のコマンドで公開鍵を表示し、「ssh-rsa ~ 自分のメールアドレス」をコピーします。

 

> type %homedrive%%homepath%\.ssh\github\id.rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1r2MfRiv4TGt+jTD96PLTRkYb1nn4mul2Rr
1o8a5iQ8blw3fd43c2qZYjVTIIh7N+****uVXnXyWQNeVNT/IPEoaZaaur9SDAojhcA1kUMODK
0KuKDlbddxijWqJzzmEqcrZGNFEKUTVfB/********0ScyGWiJWjIOVUloLqcdy6CEbHSjiLV7
rxFqPhFU/RO0QbqS58zjx********JXudJ+QJcwmUlLoH1k22AEH154Q28hRNriupma8D/VyJ5
2VWWHwtgF+F6jp8G72uhn46aYmQXK3brUIv7vu/k/8lAUUNI32UrPNoxWII6rbs/lU+0vs5peh
QqVlPcjJd3 hoge@foo.com

 

 

"Key" の欄にコピーした公開鍵を張り付けます。

"Title" は自分がどの公開鍵かわかる名称を付けます。私は端末名を記入してみました。

複数の端末を持つ場合も共通の鍵を使用するのではなくそれぞれ異なる鍵を生成して使用するほうが良いと思います。

 

タイトル、公開鍵を設定した様子

 

 

「Add SSH key」ボタンをクリックしたら設定は以上で完了です。

 

 

2-7. 接続できるか確認

"ssh -T" コマンドで接続できるかを確認します。
以下のように表示されればOKです。

 

$ ssh -T git@github.com
Hi hidetoshi-kinoshita! You've successfully authenticated, but GitHub does not provide shell access. 
$

 

 

2-8. git clone

リモートで作成済みのリポジトリを clone してみることで最後の動作確認としてみます。
コマンドは下記の通り先頭を "git@github.com:" とします。

$ git clone git@github.com:<ユーザ名>/<リポジトリ名>.git

 

git clone の例 

 

 

ライセンス

本ページの情報は、特記無い限り下記 MIT ライセンスで提供されます。

The MIT License (MIT)

Copyright © 2022 Kinoshita Hidetoshi

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 

 

参考

 


 

変更履歴

2022-11-07 - 新規作成

 

Programming Items トップページ

プライバシーポリシー