LoginSignup
1
0

More than 1 year has passed since last update.

Windows10でGitHubを始める~⑥-3.Git操作時のGitHub認証SSH編

Last updated at Posted at 2022-03-25

個人学習メモ。

1.SSHについて

1-1.SSHとは

  • ネットワーク上のコンピュータを遠隔操作するためのプロトコル
  • パスワード情報含めて通信をすべて暗号化する
  • 「Secure Shell」の略
  • ポート22を使用する

SSHというプロトコルでGitHub~Git間通信を暗号化して安全にファイルをやり取りしましょう、ということ。
image.png

1-2.SSHの認証方式

SSHは「公開鍵認証方式」という方法で通信を暗号化する。
公開鍵認証方式は「公開鍵」「秘密鍵」の2種類の鍵を使って安全に情報をやり取りする方式のこと。
(この2種類の鍵をキーペアと言ったりする)
以下の流れでクライアントとサーバがやり取りをし、認証を行う。

  1. クライアントが公開鍵と秘密鍵を作成する
  2. クライアントが公開鍵をサーバに渡す
  3. クライアントがサーバに認証を要求する
  4. サーバは公開鍵で暗号文を作成し、クライアントに送る
  5. クライアントは秘密鍵で暗号文を復号し、その結果をサーバに送る
  6. サーバはクライアントから送られた復号結果を確認する
  7. 復号結果が正しければ、正規のユーザーとして認証される
    image.png

2.SSH公開鍵・秘密鍵生成

Git Bashでssh-keygenコマンドを実行する。対話形式で公開鍵・秘密鍵(キーペア)が生成される。
ssh-keygenコマンドの各種オプションについて触れないので各自調べてほしい。
デフォルトで作成されるキーペアはrsa。

ssh-keygen

image.png
Enter file in which to save the key (/e/home/.ssh/id_rsa):で鍵を格納するディレクトリを聞かれている。そのままEnterすると.ssh/が作成される。

image.png
Enter passphrase (empty for no passphrase):でパスフレーズを入力せよと言われる。パスフレーズは自分でパスワードを考えて入力する。後でこのパスフレーズは使うので忘れないようにする。
パスフレーズは二回入力する。

image.png
~/.sshディレクトリにキーペアが生成された。

image.png
~/.sshディレクトリ内にキーペアid_rsais_rsa.pubが存在することが確認できる。
.pubがついている方が公開鍵(public key)である。
image.png

Windowsのエクスプローラーからも確認できる。
image.png
image.png

ここは好みだが私はリネームしておく。
image.png

3.GitHubに公開鍵を登録する

公開鍵の中の文字列をコピーしてGitHubに登録する。
cat id_rsa_qiitatest.pubで中身を見るとこんな感じの文字列が書かれている。
image.png
これをコピーしてもいいが、以下コマンドでクリップボードにコピーできる。

clip < id_rsa_qiitatest.pub

ブラウザでGitHubにログインする。
[Settings]-[SSH and GPG keys]
SSH keysの[New SSH key]をクリックする。
image.png

Titleに適当な名前を付けKeyに公開鍵を貼り付けて[Add SSH key]をクリックする。
image.png
image.png

4.ローカルGit側の秘密鍵設定ファイル作成

ここから自分のPC側Gitの設定を行う。

4-1.configファイルの作成

Git Bashで.ssh直下にconfigファイルを作る。

touch config
#config作成
chmod 600 config
#権限設定

image.png
image.png

configファイルを編集する。今回はvimで編集する。

vim config

ファイルを開いた後、iで編集モードに入り以下情報を追加する。

# Githubの設定
### Qiitaテスト用
# - - - - - - - - - - - - 
Host github.com
  User git
  Port 22
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_qiitatest #秘密鍵のパスを入力
  TCPKeepAlive yes #ここは好み
  IdentitiesOnly yes #ここは好み

image.png

ファイルへの追記が終わったらescで編集モードを抜け、:wqEnterで保存して終了する。

4-2.SSH Agentの設定

パスフレーズの入力をいちいちしなくてもいいように、SSH Agentの設定をする。
Git Bashでssh-agentを起動する。

ssh-agent bash

ssh-agentに生成した秘密鍵を登録する。
パスフレーズが求められるので、SSHキーペア生成時に入力したパスフレーズを入力する。

ssh-add ~/.ssh/id_rsa_qiitatest

以下コマンドで登録できたか確認する。

ssh-add -l

image.png

鍵の情報が表示されていればOK。

5.GitHubにSSH接続できるか確認する

以下コマンドを実行する。

ssh -T git@github.com

Hi emi-ki! You've successfully authenticated, but GitHub does not provide shell access.とメッセージが表示されればOK。SSH接続できた。
image.png

初回接続時は以下のようなメッセージが出る場合があるが、yesですすめる。

The authenticity of host 'github.com (13.114.40.48)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

これでSSH認証が通っているので、リモートリポジトリとファイルのやり取りができる。
ディレクトリ内の不要なテキストファイルを削除したり追加したりしてadd、コミットし、pushすると無事リモートリポジトリ(GitHub)と通信できていることが確認できる。
image.png

余談

キーペアはTeraTermのGUIで作る方法もある。これが一番簡単かもしれない。

だがしかしエンジニアたるものコマンドで実施したいのが心情。

参考

Windows10でGitHubを始める~⓪Gitの概念とインストールソフトの種類
Windows10でGitHubを始める~①Gitインストール
Windows10でGitHubを始める~①'おまけGitホームディレクトリ変更
Windows10でGitHubを始める~②GitHubアカウント作成
Windows10でGitHubを始める~③GitHubでのメールアドレス設定とGitクライアントでのユーザ名・メールアドレス設定
Windows10でGitHubを始める~③'おまけユーザ名・メールアドレス設定について詳細
Windows10でGitHubを始める~④リモートリポジトリの作成(GitHub)
Windows10でGitHubを始める~⑤Githubにプッシュする
Windows10でGitHubを始める~⑥-0.Git~GitHub間の認証について
Windows10でGitHubを始める~⑥-1.Git操作時のGitHub認証HTTPS(Git Credential Manager)
Windows10でGitHubを始める~⑥-2.Git操作時のGitHub認証HTTPS(Personal access token)
Windows10でGitHubを始める~⑥-3.Git操作時のGitHub認証SSH編
Windows10でGitHubを始める~⑦GitHubへのPullRequest

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