# SSHでGitHubに接続 ## SSHでログインする意味 安全にサーバーへログインためです.
プライベートリポジトリをクローンするとき,トークンを生成する必要がない ## SSH鍵の生成 公開鍵と秘密鍵はホームディレクトリーの.sshフォルダに保存される
```bash $ mkdir -p ~/.ssh/github $ cd ~/.ssh/github $ ssh-keygen -t ed25519 -f id_rsa # コマンド実行後に求められるパスフレーズは設定すべき(Enterで省略可) # ssh-keygenコマンドのオプション # -t [type] : 生成する鍵の暗号方式を指定できる # -f [output_keyfile] : sshkeyの保存先とファイル名の指定できる # -C [comment] : コメント ``` 生成された鍵の暗号方式の確認
```bash $ ssh-keygen -l -f id_rsa.pub ($ ssh-keygen -l -f ~/.ssh/github/id_rsa.pub) ``` _**注意点**_  秘密鍵 [ id_rsa ] : 誰にも漏らしてはいけない  公開鍵 [ id_rsa.pub ] : 他の人に渡してもいい ## 公開鍵をGitHubに登録 生成した id_rsa.pub 内の公開鍵をcatで表示し,コピーする
ssh- ........ ....@..... の一行すべてコピーする ```bash $ cat id_rsa.pub ($ cat ~/.ssh/github/id_rsa.pub) ``` Githubにログインし,setting - > SSH & GPG keys から New SSH key をクリック
タイトルは自由,認証キーは 'Authentication' ,コピーした公開鍵をペーストする
## sshの設定追加 ```bash $ vi ~/.ssh/config ```   ※ # comment.. は消さなくても良い ```text Host github.com # alias(好きな名前でもOKだが,cloneなどするときにコピペで対応できなくなる) HostName github.com # サーバーのホスト名やIPアドレス User git # サーバーのユーザー名 IdentityFile ~/.ssh/github/id_rsa # 秘密鍵の絶対パス TCPKeepAlive yes # 接続の有効無効の確認通知を出すかどうか(yes/no) IdentitiesOnly yes # IdentityFileで指定した秘密鍵に限定するかどうか(yes/no) ``` ## 接続の確認 秘密鍵を使用する際のパスフレーズが求められる
鍵の生成で設定したパスフレーズを入力 ```bash $ ssh -T git@github.com Enter passphrase for key '/Users/username/.ssh/github/id_rsa': Hi GithubUser! You've successfully authenticated, but GitHub does not provide shell access. <----この出力が出たら成功 ``` ## Clone リポジトリをcloneするときは https ではなく,sshを選択してコピーする ```bash $ git clone git@github.com:user_name/repo_name.git # 例 ``` ## Reference 1. [GitHubにSSH接続するまでの手順](https://qiita.com/kkrtech/items/a164f455c73867958181) 1. [GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)