2026年6月18日
2026年6月18日
GitHubにSSHで接続する方法(サーバー上での設定)
はじめに
SSH(Secure Shell)は、リモートサーバーへの安全な接続を確立するための標準的なプロトコルです。GitHubと連携させる際には、Gitクライアントを通じてSSHを使用することが一般的で、これによりパスワードの入力が不要となり、セキュリティも向上します。
この記事では、Linuxサーバー上でGitHubリポジトリへのSSH接続を設定する手順について詳しく説明します。また、各種注意点や問題解決のためのヒントも提供します。
症状・背景
- Git操作が頻繁に行われる環境
リポジトリのプルやプッシュが日常的に行われている場合、SSH接続はパスワード入力を省略するだけでなく、セキュリティ上も有益です。
- 複数のGitHubアカウントを使用している
多くのプロジェクトを管理している開発者は、異なるGitHubアカウントを持つことがあり、それぞれに異なるSSHキーが必要になることがあります。
- サーバー間での自動デプロイを行う必要がある
CI/CDパイプラインにおいては、安全かつ迅速なデプロイのためにSSH接続が重要です。
- セキュリティ上の理由からHTTPのGitアクセスを避ける
HTTPまたはHTTPS経由でのGit操作では、認証情報が明文で送信されるため、より安全な通信手段としてSSHを利用することが推奨されます。
手順・設定方法
ステップ1: SSH鍵ペアの生成
# システム上の既存のSSH公開鍵と秘密鍵を確認します。存在しない場合、新たに作成します。
ls -al ~/.ssh/id_rsa.pub
if [ ! -f ~/.ssh/id_rsa.pub ]; then
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # メールアドレスは任意です。
fi
# キーのパスフレーズを設定するかどうか選択します。セキュリティ上の理由で、ここでは省略します。
ステップ2: GitHubに公開鍵を登録
# 生成した公開鍵をGitHubアカウントに追加します。
cat ~/.ssh/id_rsa.pub | pbcopy # Macの場合(Linuxではクリップボードコマンドが異なる可能性があります)
ステップ3: GitHubリポジトリへのSSH接続
# GitのリモートURLをSSH形式に変更します。通常、HTTP形式で初期設定されているため、以下のコマンドを使用します。
git remote set-url origin git@github.com:<username>/<repository>.git # usernameとrepositoryは適切な値に置き換えます。
# 既存のリポジトリをクローンする場合
git clone git@github.com:<username>/<repository>.git # usernameとrepositoryは適切な値に置き換えます。
ステップ4: SSH接続のトラブルシューティング
# 接続エラーが発生した場合、SSH鍵ペアや署名アルゴリズムを確認します。
ssh -T git@github.com # このコマンドは認証情報を要求せず、SSH接続の問題を調査するのに役立ちます。
# 必要に応じて、GitHubの設定からSSH鍵を削除し、再度追加することもあります。
注意事項
- パスフレーズの管理: SSHキーパスフレーズを使用しない場合でも、適切なアクセス制御とセキュリティポリシーを遵守することが重要です。
- 公開鍵の保守: 公開鍵はGitHubアカウントに追加された後も定期的に確認し、不要になったものは削除してください。
- セキュリティ上の注意: SSH接続時に署名アルゴリズムが古いものである場合、セキュリティリスクが高まります。新しいアルゴリズムを使用することを検討しましょう。
- パフォーマンス/運用上の注意: 多くのプロジェクトを管理する場合には、各プロジェクトごとに異なるSSHキーを使用すると混乱を招きます。プロジェクト間で共有できる共通のSSHキーを利用することも考慮してください。
まとめ
1. SSH鍵ペアの生成: システム上で必要であれば新規に作成します。
2. 公開鍵の登録: GitHubアカウントに新しい公開鍵を追加します。
3. リモートURLの変更: GitクライアントでHTTP形式からSSH形式への変更を行います。
4. 接続エラーの診断: SSH接続が失敗した場合、適切なトラブルシューティング手順を実行します。
5. 保守と安全対策: 公開鍵の管理やセキュリティポリシーの遵守など、継続的なメンテナンスが必要です。
関連記事: