aburi6800のブログ

コンピュータのプログラミング、ゲームに関するニッチな情報を書いていくブログです。

【git】GithubにSSH接続する

Githubリポジトリへのアクセスは、主にhttpsSSHがある。
一度cloneするだけであればhttps接続で問題ないが、GitHubではSSH接続が推奨されており、アクセスするたびにユーザー名とアクセストークンを入力することも不要になるため、普段から利用するリポジトリへのアクセスはSSHが望ましい。
このSSHの設定方法については既に多数の記事が存在するが、ようやく自分の中で手法が固まったので、まとめ直したものを記載する。

0. SSHキー生成の準備

基本的に、1つの端末に1つ作成するイメージで良いと思う。
Windowsの場合は自分のホームディレクトリに.sshフォルダを作成後、スタートメニューからGit Bashを起動する。
Linuxの場合は、ホームディレクトリでそのまま作業を行う。

以下のコマンド実行例については、WindowsのGit bashを使ったものになります。

1. SSHキー生成コマンド

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

$ ssh-keygen -t rsa -C <メールアドレス>

作成先のディレクトリの確認。
デフォルトで問題ないため、そのままEnterを押す。

Enter file in which to save the key (/c/Users/hitoshi/.ssh/id_rsa):

作成先に既に作成されている場合は以下のメッセージが表示される。
上書きして良いならyを入力する。

/c/Users/aburi/.ssh/id_rsa already exists.
Overwrite (y/n)? 

続いてパスフェーズの入力を求められる。
何も入力せずEnterを入力する。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスフェーズを設定するとVS Codeからのpush/pull操作が上手くいきませんでした。
回避方法があると思われますが、個人利用であれば未設定で構わないと思います。

以下のメッセージが表示され、公開鍵が生成される。

Your identification has been saved in /c/Users/hitoshi/.ssh/id_rsa.
Your public key has been saved in /c/Users/hitoshi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:<暗号化文字列>
The key's randomart image is:
+---[RSA 2048]----+
|    +o*o         |
|   . *.=.        |
|    O o          |
|   + = =         |
| .. * o S        |
|+..+ + = +       |
|==o . + =        |
|#... ..o..       |
|@O   ... E       |
+----[SHA256]-----+

後半のランダムアートの内容は、生成するごとに変わります。

2. 作成結果確認

.sshディレクトリにid_rsa.pubが存在していれば成功。

$ ll
total 6
-rw-r--r-- 1 hitosh i 197121 1671 2月   3 01:51 id_rsa
-rw-r--r-- 1 hitoshi 197121  401 2月   3 01:51 id_rsa.pub
-rw-r--r-- 1 hitoshi 197121  405 2月   3 01:35 known_hosts

3. Githubに公開鍵を登録

生成した公開鍵の内容をコピーする。
id_rsa.pubテキストエディタで開き中身をコピーするか、以下でコンソールに出力したものをコピーする。

$ cat ~/.ssh/id_rsa.pub

Git Bashでは以下コマンドでファイルの内容をクリップボードにコピーできるため、楽で確実です。

$ clip < ~/.ssh/id_rsa.pub

githubのアカウントの「Settings」ページを開き、「SSH and GPG keys」を選択、「SSH keys」の右側にある「New SSH key」ボタンを押す。
名前は適当に、「<端末名>@<OS名>」のようにすると良いかもしれない。
f:id:aburi6800:20210725121553p:plain

4. GithubとのSSH接続確認

接続の確認は以下で行う。

$ ssh -T git@github.com

成功すると以下のメッセージが表示される。

Hi <ユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.

5. トラブルシューティング

失敗した場合は、以下を確認する。
1. そもそもネットワークに接続されているか。wifiや有線LANの接続を確認する。
2. Githubに登録したSSH公開鍵の内容。一度削除して登録しなおしてみる。
3. ssh公開鍵の作成内容。暗号化方式が誤っていないかなど。一度.sshディレクトリ内のファイルを削除し、再度作り直してみる。