SSH秘密鍵・公開鍵の作成

ssh-keygenで鍵を作成

クライアントPCで SSHの秘密鍵、公開鍵を作成します。Macは ターミナル、Windowsは PowerShell を開き、cd コマンドでユーザホームに移動します。

cd
//または
cd ~/

ssh-keygenコマンドでRSA認証鍵を作成します。

ssh-keygen -t rsa

ファイル作成場所やパスワードを聞かれたら、すべて空欄で入力します。

Enter file in which to save the key (/home/xxxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

SSHの鍵が作成されました。

...
The key's randomart image is:
+---[RSA 4096]----+
|      .     +B. o|
|       o o  E ++o|
|      o X .  o o+|
|     . + O .  o.o|
|        S + .oo*o|
|           o.o+oB|
|              *++|
|            .+.+.|
|           ...o+*|
+----[SHA256]-----+

秘密鍵・公開鍵の確認

.ssh フォルダの中を確認してみましょう。

Macの場合
ls -al .ssh
Windowsの場合
dir .ssh

.sshフォルダに id_rsa と id_rsa.pubが作成されたのを確認します。

id_rsa
id_rsa.pub
  • id_rsa:秘密鍵
  • id_rsa.pub:公開鍵

鍵ファイル名を任意で設定する場合

鍵ファイル名はデフォルトでid_rsaで作成されますが、-f オプションで任意のファイル名を指定できます。

ssh-keygen -t rsa -f .ssh/鍵ファイル名

.ssh/config の設定

.ssh/configファイルを作成して GitHub の認証鍵情報を設定します。

vi を利用する場合
vi .ssh/config
  • ホスト名(HostName):github.com
  • ユーザ名(User):git
  • 秘密鍵のパス(IdentityFile):~/.ssh/id_rsa.pub
Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa.pub
vi を利用しない場合

vi を利用しない場合は、エディタソフトで .ssh/config を作成して設定してください。

公開鍵の表示

公開鍵(id_rsa.pub)の中身を表示し、「ssh-rsa からアカウント@ホスト」まですべてコピーしておきます。この鍵は GitHub の公開鍵登録で入力します。

cat .ssh/鍵ファイル名.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTBu1r3uwhKx2wqouYSgTIytCkzKS/FXhR1m1L0kUYNw/0Bm4m
...
...
qoZirabBPzOW27SO0TBHAQGw== アカウント名@ホスト

GitHub の設定

GitHub にログインしてメニューから setting にアクセスします。

SSH and GPG keys にアクセスします。

New SSH Key をクリックして新規作成画面にサクセスします。

入力画面のKey にコピーした公開鍵を貼り付け、New SSH Key で新規作成します。

SSH Keys に公開鍵が登録されました。

Githubにログイン

GitHub に公開鍵を登録したら、クライアントから SSHログインしてみましょう。

ssh -T [email protected]

初回接続で質問されるので yes で答えます。

The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:xxxxx
Are you sure you want to continue connecting (yes/no)?yes

You've successfully authenticated と表示されれば成功です。

Warning: Permanently added the RSA host key for IP address 'xxxxxx' to the list of known hosts.
Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.

はじめての Git