🐙
Git の ssh について
はじめに
そもそも、Git の https じゃなく ssh にする理由は主に下記の通り。
-
sshは鍵認証なので、毎回パスワードを求められない -
sshはセキュリティが高い -
sshは2段階認証を回避できる
そして、セキュリティの件を考えると、ssh 一択になるのではないかと。
ただ、ssh鍵が流出してしまう恐れがあるので、SSH Agent を利用すると尚良い。
以上を踏まえて、
- ssh
- 暗号鍵はed25519(rsaは非推奨になってしまった → 楕円曲線暗号)
- ssh-agent
とする。
手順
流れ
-
ssh-keygenで鍵を作成 -
ssh-addで鍵を登録 - config ファイルに対象鍵の鍵を登録
- GitHub に公開鍵を登録
- 鍵が通っているかテスト
ポイント
- 鍵の種類は
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