😎

GitHubへのssh接続(備忘録)

2023/01/04に公開約2,600字

はじめに

わりとありふれたネタではあると思うが、地味に書き方が足りてない所が多いのもあり、自分の備忘録程度にメモ。

GitHubへのアクセスはアクセストークンを発行する方法もあるが、個人的になじみのあるssh接続の方を試してみる。

ローカルの作業

SSHキーの作成

以下のコマンドにてキーを作成する。
ここでのメールアドレスは個人で利用しているものを付与する。

terminal
ssh-keygen -t ed25519 -C "hir0t15.m@gmail.com"

そのままEnterを押す。

Enter file in which to save the key (/home/user01/.ssh/id_ed25519):

パスフレーズも空白のままでよいので、そのままEnterを押す。

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

以下のコマンドが出力される。

Your identification has been saved in /home/user01/.ssh/id_ed25519
Your public key has been saved in /home/user01/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA hir0t15.m@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
|oo. .            |
|.oo. .+ .        |
|o =oo+.+ .       |
| o *+B=o.        |
|  =.*+*oS        |
| + . *+.         |
|o.o o ==         |
|.+.o o o+        |
| .E.    ..       |
+----[SHA256]-----+

これにより、~/.sshに以下が生成される。

  • id_ed25519(秘密鍵)
  • id_ed25519.pub(公開鍵)

これは管理しやすいように~/.ssh/githubというディレクトリに格納するようにする。

terminal
mkdir ~/.ssh/github
mv ~/.ssh/id_* ~/.ssh/github

configの編集

~/.ssh/configを編集する。

terminal
vi ~/.ssh/config

ここでのポイントは以下。

  • Userは必ずgitにする。
    自身のユーザーネームにしてはいけない。
  • IdentityFileは秘密鍵のフルパスを指定する。
Host github github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github/id_ed25519

GitHubへの公開鍵の設定

公開鍵の確認

公開鍵の内容を確認する。

terminal
$ cat .ssh/github/id_ed25519.pub
ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX hir0t15.m@gmail.com

GitHubへの設定

公開鍵をGitHubに保存する。
以下URLにアクセスして、「New SSH Key」というボタンを押す。

https://github.com/settings/keys

以下の通り設定をする。

  • 「Title」は任意でよい。
  • 「Key type」はそのまま。
  • 「Key」に先ほど出力された「id_ed25519.pub」の内容を転記する。

入力完了後、「Add SSH key」を押すと、登録は完了となる。

接続確認

以下のコマンドにてssh接続できるかを確認する。

terminal
ssh -T git@github

以下の通り出力されたらOK。

Hi hr0t15! You've successfully authenticated, but GitHub does not provide shell access.

その他

すでにClone済みのリポジトリがある場合

https接続でClone済みリポジトリがある場合、リモートリポジトリのURLをssh接続用に変更する必要がある。

接続先を変更する前に、現在の接続先を確認する。

terminal
git remote -v

例えば、以下のようにhttps接続のURLが表示されたとする。

origin https://github.com/hr0t15/zenn.git (fetch)
origin https://github.com/hr0t15/zenn.git (push)

以下のコマンドで、接続先のURLの変更を行う。

terminal
git remote set-url origin git@github.com:hr0t15/zenn.git

再度、接続先を確認する。

terminal
git remote -v

以下のようにssh接続のURLに変わっていればOK。

origin  git@github.com:hr0t15/zenn.git (fetch)
origin  git@github.com:hr0t15/zenn.git (push)
GitHubで編集を提案

Discussion

ログインするとコメントできます