【ITニュース解説】How to set up SSH on a new MacBook (M1) and connect to GitHub
2025年09月06日に「Dev.to」が公開したITニュース「How to set up SSH on a new MacBook (M1) and connect to GitHub」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
M1 MacBookでSSHキーを設定しGitHubと連携する方法を解説。新規キー生成、ssh-agentへの登録、config設定、GitHubへの公開キー登録、接続テストで、パスワード不要で安全にコードを管理。トラブルシューティングも網羅する。
ITニュース解説
システムエンジニアを目指す初心者にとって、GitHubはコードを管理し、他の開発者と協力するための重要なプラットフォームである。このGitHubをより安全かつ便利に利用するために、SSH(Secure Shell)という技術を設定することが強く推奨される。SSHを設定すると、GitHubにコードをプッシュする際などに、毎回ユーザー名とパスワード(またはPersonal Access Tokenと呼ばれる認証情報)を入力する手間が省ける。これはセキュリティを確保しながら、開発作業を高速化し、全体的な効率を向上させるための標準的な方法だ。
SSHは、インターネット経由で安全な通信路を確立するための暗号化プロトコルである。GitHubとの通信では、公開鍵認証という仕組みが利用される。この仕組みでは、自分のMacBookに「秘密鍵」と「公開鍵」という一対のキーペアを生成する。秘密鍵はMacBook上に厳重に保管され、決して外部に公開してはならない。一方、公開鍵はGitHubに登録し、誰に見られても問題ない情報である。GitHubは、登録された公開鍵と、MacBookから送信される秘密鍵を利用して、通信しているのが本人であることを確認する。
まず、MacBookにすでにSSHキーが存在しないかを確認する。ターミナルを開き、「ls -al ~/.ssh」というコマンドを実行すると、SSH関連のファイルが保存されているディレクトリの内容が表示される。もしこのディレクトリ自体が存在しないか、id_ed25519やid_rsaといった名前のキーファイルが見当たらない場合は、新しいキーを作成する準備が整っている。もし既存のキーが表示された場合は、そのキーの名前をメモしておくことが重要だ。
次に、新しいSSHキーペアを生成する。現在推奨されている最新のキータイプはed25519である。「ssh-keygen -t ed25519 -C "your_email@example.com"」というコマンドを実行する。"your_email@example.com"の部分は、自分のGitHubに登録しているメールアドレスに置き換える必要がある。キーを保存するファイルの場所を尋ねられたら、特別な理由がなければEnterキーを押してデフォルトのパス(~/.ssh/id_ed25519)を受け入れる。この際、パスフレーズ(パスワードのようなもの)を設定することを強く推奨する。これは、万が一秘密鍵が第三者の手に渡ったとしても、パスフレーズがなければ悪用できないようにするための、セキュリティを一層高める措置となる。もしed25519がシステムでサポートされていない場合は、より一般的なRSA形式で「ssh-keygen -t rsa -b 4096 -C "your_email@example.com"」と実行する。-b 4096はキーの強度を示すビット数である。
キーが生成されたら、ssh-agentというプログラムを開始し、生成した秘密鍵をssh-agentに登録する。ssh-agentは、秘密鍵の認証情報をメモリ上に保持し、必要に応じてGitHubなどのリモートサーバーへの認証に利用する。これにより、一度パスフレーズを入力すれば、それ以降は繰り返し入力する手間が省ける。ターミナルで「eval "$(ssh-agent -s)"」を実行してssh-agentを開始し、その後「ssh-add --apple-use-keychain ~/.ssh/id_ed25519」と実行して秘密鍵を登録する。macOSの場合、--apple-use-keychainオプションを使用することで、設定したパスフレーズをmacOSのキーチェーンに安全に保存し、MacBookの再起動後も自動的にキーがロードされるようにできる。もしこのコマンドでエラーが発生した場合は、Homebrewなどのツールでインストールされた別のssh-addが使われている可能性がある。その際は、Macが標準で提供する/usr/bin/ssh-addを直接指定して実行することを試す必要がある。
ssh-agentへの登録と並行して、~/.ssh/configという設定ファイルを編集または新規作成することが重要だ。このファイルに設定を記述することで、MacBookがGitHubに接続する際にどのSSHキーを使うべきか、またキーチェーンを利用するかどうかを自動的に判断するようになる。具体的には、GitHubに対する接続設定として、ホスト名、使用するユーザー名、そして生成した秘密鍵のパスを指定する。「Host github.com」「HostName github.com」「User git」「AddKeysToAgent yes」「UseKeychain yes」「IdentityFile ~/.ssh/id_ed25519」といった行を追加する。AddKeysToAgent yesとUseKeychain yesという設定は、キーを自動的にssh-agentに追加し、キーチェーンを利用するように指示するもので、特に複数のSSHキーを使い分ける場合や、パスフレーズを記憶させたい場合に非常に役立つ。
次に、生成された公開鍵をGitHubアカウントに追加する。公開鍵は秘密鍵と同じディレクトリにid_ed25519.pubという名前で保存されている。「pbcopy < ~/.ssh/id_ed25519.pub」というコマンドを実行すると、この公開鍵の内容がクリップボードにコピーされる。GitHubのウェブサイトにログインし、「Settings(設定)」から「SSH and GPG keys(SSHとGPGキー)」のセクションに進み、「New SSH key(新しいSSHキー)」をクリックする。キーに識別しやすいタイトル(例えば「MacBook-M1」)をつけ、クリップボードにコピーした公開鍵をペーストして追加する。
公開鍵の登録が完了したら、SSH接続が正しく機能するかテストする。「ssh -T git@github.com」というコマンドを実行する。成功すると、「Hi <your-username>! You've successfully authenticated, but GitHub does not provide shell access.」のようなメッセージが表示される。これは、GitHubへの認証が成功したことを意味する。もし「Permission denied (publickey)」というエラーが表示された場合は、何らかの設定に問題があるため、トラブルシューティングが必要となる。
もしすでにHTTPSプロトコルを使ってクローンした既存のGitリポジトリがある場合は、そのリポジトリの接続方式をSSHに切り替えることができる。リポジトリのディレクトリ内で「git remote -v」と実行し、現在のリモート設定がHTTPSになっていることを確認したら、「git remote set-url origin git@github.com:USERNAME/REPO.git」というコマンドでURLをSSH形式に更新する。USERNAMEとREPOの部分は、自分のGitHubユーザー名とリポジトリ名に置き換える必要がある。新規にリポジトリをクローンする場合は、「git clone git@github.com:USERNAME/REPO.git」と最初からSSH形式でクローンすればよい。
トラブルシューティングとしては、「ssh-add --apple-use-keychain」コマンドでエラーが出る場合、which ssh-addコマンドで実行されているssh-addがApple純正の/usr/bin/ssh-addではない可能性がある。その場合は、直接純正のssh-addを指定して実行する。Permission denied (publickey)エラーは、秘密鍵がssh-agentにロードされていない、ファイル権限が不適切である、GitHubに間違った公開鍵が登録されている、またはリポジトリがまだHTTPSを使っている、などの原因が考えられる。ssh-add -lでロードされているキーを確認したり、chmod 700 ~/.ssh、chmod 600 ~/.ssh/id_ed25519、chmod 644 ~/.ssh/id_ed25519.pubといったコマンドでファイル権限を修正したり、公開鍵の再コピーとGitHubへの再登録、リモートURLの確認を行うことが対処法となる。より詳細なデバッグ情報が必要な場合は、「ssh -vT git@github.com」という詳細モードで接続を試すことも有効だ。
複数のGitHubアカウント(例えば個人用と仕事用)を使い分けたい場合も、SSHは対応可能だ。それぞれの目的ごとに異なるSSHキーペアを生成し、~/.ssh/configファイルに各アカウント用のホストエイリアス(例えばgithub-personalやgithub-work)を設定する。この設定では、それぞれのホストエイリアスに対して異なる秘密鍵ファイルを指定し、GitHubに登録する公開鍵もそれぞれに対応したものを使用する。リポジトリをクローンしたり、リモートを設定したりする際には、これらのエイリアスを使うことで、自動的に正しいSSHキーが選択されるようになる。
Apple Silicon(M1チップ搭載)のMacBookを使用している場合、Homebrewなどのパッケージマネージャーが独自のsshやssh-addを/opt/homebrew/binにインストールすることがある。これらがApple純正のssh-addが持つ--apple-use-keychainのような特定のオプションをサポートしていない場合があるため、もし問題が発生した場合は、前述の通り/usr/bin/ssh-addを直接利用することを検討する必要がある。また、最近のmacOSのデフォルトシェルであるzshでは、ログイン後にキーを自動的にロードさせるために、~/.zshrcファイルにssh-addコマンドを追加する設定が必要になる場合がある。
これらの手順と注意点を理解し、適切に設定することで、システムエンジニアを目指す初心者は、安全で効率的な開発環境を構築し、GitHubを最大限に活用できるようになるだろう。