🐙

Git の ssh について

に公開

はじめに

そもそも、Git の https じゃなく ssh にする理由は主に下記の通り。

  • ssh は鍵認証なので、毎回パスワードを求められない
  • ssh はセキュリティが高い
  • ssh は2段階認証を回避できる

そして、セキュリティの件を考えると、ssh 一択になるのではないかと。
ただ、ssh鍵が流出してしまう恐れがあるので、SSH Agent を利用すると尚良い。

以上を踏まえて、

  • ssh
  • 暗号鍵はed25519(rsaは非推奨になってしまった → 楕円曲線暗号)
  • ssh-agent

とする。

手順

流れ

  1. ssh-keygen で鍵を作成
  2. ssh-add で鍵を登録
  3. config ファイルに対象鍵の鍵を登録
  4. GitHub に公開鍵を登録
  5. 鍵が通っているかテスト

ポイント

  • 鍵の種類は ed25519 を利用する
  • 鍵のパスフレーズは設定する
  • 鍵の保存場所は ~/.ssh/id_鍵の名前 とする
  • ssh-agent を利用する
  • config ファイルに対象鍵の登録をする

1. ssh-keygen で鍵を作成

まず、ssh の鍵を発行。

ssh-keygen -t ed25519 -C "メールアドレス"

実行すると、下記が聞かれる。

鍵の保存場所

~/.ssh/id_鍵の名前 としておくと管理しやすい

鍵のパスフレーズ
  • パスフレーズは設定を推奨。セキュリティが高まる
  • 毎回、パスフレーズを求められますが、ssh-agent を利用することで回避

2. ssh-add で鍵を登録

次に、ssh-agent を起動して、鍵を登録。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_鍵の名前

3. config ファイルに対象鍵の鍵を登録

~/.ssh/config に対象鍵の登録

Host github-任意の名前
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_鍵の名前
	IdentitiesOnly yes
  • Host: 任意の名前をつける。ssh github-任意の名前 で接続できるようになる
  • HostName: 接続先のホスト名を指定。GitHub なら github.com
  • User: 接続するユーザー名を指定。GitHub なら git
  • IdentityFile: 鍵の保存場所を指定
  • IdentitiesOnly: yes にすることで、指定した鍵のみを利用する

4. GitHub に公開鍵を登録

次に、GitHub に公開鍵を登録します。

cat ~/.ssh/id_鍵の名前.pub

上記コマンドで公開鍵を表示させて、コピー。
次に、GitHub の設定画面から SSH and GPG keys を選択して、New SSH key をクリック。
タイトルを入力して、コピーした公開鍵を貼り付けて、Add SSH key をクリック。

5. 鍵が通っているかテスト

最後に、鍵が通っているかテスト。

ssh -T git@github-任意の名前

Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access. と表示されれば成功。

Discussion