0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[初心者] GitHubへSSH接続してPushする(Mac)

Last updated at Posted at 2024-10-13

GitHubに登録して活動を始めるタイミングでSSHについての設定を何もしなかったので数日間HTTPS接続だったのですが、ようやくSSH接続に切り替えました。その時にやったことをまとめます。


前提

・MacOSのバージョンは Sonoma 14.6.1です。
・GitHubアカウント取得済みで、既にリモートリポジトリへのプッシュを経験しています。
・コード内の<>は筆者によって書き換えたり追加した部分なので、適宜読み替えてください。


1. TerminalでSSH鍵を作成する

SSH接続に必要な公開鍵と秘密鍵を作る前に、まずそれらが既にあるかどうかを確認しましょう。

$ ls ~/.ssh
known_hosts     known_hosts.old

SSH鍵(id_<鍵名>id_<鍵名>.pubのセット)がないので作ります。

$ ssh-keygen -t ed25519 -C "<GitHub登録のメールアドレス>"

-tオプションで鍵タイプ(暗号アルゴリズム)をed25519に指定。ed25519は他のアルゴリズムより優れているとのことで、最近はこちらが推奨されているようです。
-Cオプションは、公開鍵の末尾に追加されるコメントを決めることができます。指定しない場合は、デフォルトで <ユーザー名>@<ホスト名> が入ります。-C ""でコメントなしにすることもできます。


ssh-keygenコマンドを実行した結果を下に載せます。途中でエンターとパスワードを求められるので入力してください。このパスワードはまた後で使います。

$ ssh-keygen -t ed25519 -C "<GitHub登録のメールアドレス>"      
Generating public/private ed25519 key pair.
Enter file in which to save the key (<ホームディレクトリ>/.ssh/id_ed25519): <エンターを押す>
Enter passphrase (empty for no passphrase): <パスワード入力> 
Enter same passphrase again: <パスワード入力>
Your identification has been saved in <ホームディレクトリ>/.ssh/id_ed25519
Your public key has been saved in <ホームディレクトリ>/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:MAtkL7Si+wkIwt9x5kCo1Blhqq3mzm4IoG7dUlP8go4 <GitHub登録のメールアドレス>
The key's randomart image is:
+--[ED25519 256]--+
|   +=            |
|  +++o           |
| o.++.=          |
|=o...o *         |
|Bo.  o+oS        |
|*o. .+*. .       |
|O...=....        |
|=* E o           |
|==o .            |
+----[SHA256]-----+

これで~/.sshフォルダにid_ed25519id_ed25519.pubのふたつのファイルが出来ました。


2. GitHubに公開鍵を登録する

公開鍵(id_ed25519.pub)の内容をコピーしてGitHubに登録します。
コマンドでコピーする場合はこれ↓。

$ pbcopy < ~/.ssh/id_ed25519.pub

コピーしたらGitHubのサイトに行き、右上にある自分のアイコンをクリックして「Settings」を選びます。
左側のメニューから「SSH and GPG keys」を選び、「New SSH key」ボタンを押します。

スクリーンショット 2024-10-13 21.50.17.png

「Title」を好きに入力して(私は作成日を入れて"241013公開鍵"としました)、「Key」にさっきコピーした公開鍵をペーストします。
「Add SSH key」 を押したら、GitHub側の設定は完了。


試しにsshコマンドを実行して、SSH接続してみましょう。鍵を作るときに入力したパスワードを入れて以下のように表示されたら成功です!

$ ssh -T git@github.com                              
Enter passphrase for key '<ホームディレクトリ>/.ssh/id_ed25519': <パスワード入力>
Hi <GitHubのユーザーネーム>! You've successfully authenticated, but GitHub does not provide shell access.

3. リモートリポジトリのURLを変更

今までHTTPSで接続していたのでリモートリポジトリのURLを確認するとこのようになってました。

$git remote -v
origin  https://github.com/<リモートリポジトリ名>.git (fetch)
origin  https://github.com/<リモートリポジトリ名>.git (push)

これをSSHのURLに変更します。(GitHubのリポジトリページにある「Code」ボタンを押すとSSHのURLを確認できます。)

$ git remote set-url origin git@github.com:<リモートリポジトリ名>.git

もう一度git remote -vで確認すると、ちゃんと変更されていました。

$ git remote -v
origin  git@github.com:<リモートリポジトリ名>.git (fetch)
origin  git@github.com:<リモートリポジトリ名>.git (push)

4. ssh-agentに追加する

ここまでやって、SSH接続でリモートリポジトリへgit pushできるようになったのですが、プッシュするたびにパスワードを要求されるようになりました。

$ git push
Enter passphrase for key '<ホームディレクトリ>/.ssh/id_ed25519': <パスワード入力>
Everything up-to-date

これを解決するために、ssh-agentに追加します。

$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /<ホームディレクトリ>/.ssh/id_ed25519: <パスワード入力>
Identity added: /<ホームディレクトリ>/.ssh/id_ed25519 (<GitHub登録のメールアドレス>)

これで今まで通りgit pushできるようになりました!

$ git push
Everything up-to-date


以上、修正箇所やアドバイスがあればコメントぜひお願いします。


参照

SSH を使用した GitHub への接続 - GitHub Docs
GithubにSSH接続できるのに、Git操作時にエラーが出る場合の確認ポイント - Qiita
githubからsshでクローンする。sshでpushする - Qiita
SSH 鍵の生成 | IBM Cloud 資料
【SSH】ssh-agentの使い方を整理する - Qiita

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?