【ssh】sshでgithubに接続する方法(mac)
sshを使ってgithubに接続できるようにする方法のメモ。
<参考サイト>
・(Github公式) 既存の SSH キーの確認
・[(Github公式) 新しい SSH キーを生成して ssh-agent に追加する](新しい SSH キーを生成して ssh-agent に追加する)
・(Github公式) GitHub アカウントへの新しい SSH キーの追加
・(Github公式) SAMシングルサインオンで利用するためにSSHキーを認可する
作業手順
- 既存のSSHキーが存在するか確認
-
SSHキーの作成
3. 作成方法
4. SSHキーの注意点
4. ssh-keygenのデフォルト設定
5. ssh-keygenのオプション
6. 暗号化方式とビット長の種類 -
キーをssh-agentに追加
4. ssh-agentとは?
5. ssh-agentの起動と設定
6. 秘密鍵を追加
7. 多段認証(ForwardAgent) - キーをgithubに追加
- githubのSSOを使うためにキーを許可する
## 1. 既存のSSHキーが存在するか確認
lsコマンドで.sshフォルダへ移動する。
オプションは「-a」と「-l」を指定。
┗ 「-a」:隠しフォルダも表示
┗ 「-l」:詳細を表示
┗ 「-al」:オプション-aと-l
$ ls -al ~/.ssh
下記ファイルが表示されればキーが存在している。
id_rsa
: 秘密鍵
id_rsa.pub
: 公開鍵
暗号方式によって、「rsa」の部分が、「ecdsa」や「ed25519」になったりする。
フォルダが存在しない場合、あるいは新しいキーを作成する場合はSSHキーを作成する。
## 2. SSHキーの作成 ### 作成方法 ssh-keygenコマンドでSSHキーを作成する。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
<オプションの内容>
-t
: 暗号化方式
-b
: 鍵長(ビット長)
-C
: コメント
暗号化方式rsa、ビット長4096bit、e-mailアドレスをラベルとしたSSHキーを生成する。
3回Enterを促される。パスフレーズを設定しない場合は3回Enterをクリック。
<3回の確認内容詳細>
Enter file in whch to save the key (/Users/(username)/.ssh/id_rsa):
ファイルの保存場所とファイル名の確認。基本的にデフォルト。
※既存で鍵が存在する場合は上書きされる。
Enter passphrase (empty for no passphrase):
パスフレーズはパスワードとほぼ同意(より長い設定が可能)
このパスフレーズは秘密鍵にアクセスするためのもの。
zipフォルダやexcelファイルにパスワードをかけるのと同じ。キー自体が暗号化しているので2段階承認となる。
パスフレーズは10文字以上推奨。後述のssh-agentにパスフレーズを記録することで、都度呼び出しの手間を省ける。
Enter same passphrase again:
先程入力したパスワードの確認。
入力していない場合は空欄でEnter。
### SSHキーの注意点 作成した秘密鍵(ファイルの中身の文字コード)は超重要!漏れるのは厳禁。
この秘密鍵があれば、対となる公開鍵を登録している全てのサービスにSSHでアクセスできてしまう。
### ssh-keygenのデフォルト設定 オプション指定なしで鍵を生成した場合、
- 暗号化方式:rsa
- 鍵長:2048bit
- フォルダ: ~/.ssh
- 秘密鍵: id_rsa
- 公開鍵:id_rsa.pub
ssh-keygenのオプション
キー生成時にはいくつかオプションがある。
オプション | 内容 |
---|---|
-t | 暗号化方式 |
-b | ビット長(鍵長) |
-C | コメント |
-f | ファイルパス |
-p | 古いパスフレーズ |
-N | 新しいパスフレーズ |
オプションを設定しない場合、「-t」「-b」は自動で決まり、「-f」「-p」「-N」は質問される。
暗号化方式とビット長の種類
暗号化方式 | デフォルト鍵長 | 鍵長オプション |
---|---|---|
RSA | 2048 | 1024, 2048, 4096 |
ECDSA | 256 | 256, 384, 521 |
ED25519 | 256 | 256 |
RSAはビット長が長いため暗号化と解読が遅い。
ED25519がより強固で速い仕様。OpenSSH 6.5以降でサポートされている。
OpenSSH6.5は2014年1月に発表された仕様。
## 3. キーをssh-agentに追加 ### ssh-agentとは?
秘密鍵を登録しておくツール。
パスフレーズも登録できるため、SSH接続する際のパスワード入力の手間を省ける。
秘密鍵は複数登録可能。
多段でSSH接続(あるサーバーを踏み台にして別のサーバーに接続)することも可能。
ssh-agentの起動と設定
# ssh-agentの起動
$ eval "$(ssh-agent -s)"
# sshのconfigファイルを開く
$ open ~/.ssh/config
# (configファイルがない場合は作成)
$ touch ~/.ssh/config
$ open ~/.ssh/config
Host サーバー名(任意)
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
秘密鍵を追加
$ ssh-add -K ~/.ssh/id_rsa
追加する際にパスフレーズをキーチェン保存する。
多段認証(forwardAgent)
AWSのgit-codecommitなど、githubにSSH接続し、githubからAWSに接続する設定も可能。
configファイルに以下を記述する。
ForwardAgent yes
Host サーバー名(任意)
User ユーザー名
## 4. キーをgithubに追加 githubにログイン後、以下ページの手順に沿って実行。
- titleは任意。SSHキー識別用の名前をつける
- Keyには公開鍵の内容を登録。※秘密鍵ではない!
## 5. githubのSSOを使うためにキーを許可する 以下URLに沿って実行。 https://docs.github.com/ja/github/authenticating-to-github/authorizing-an-ssh-key-for-use-with-saml-single-sign-on
以上。