0
1

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のHTTPSとSSH通信の認証方法の違い

Posted at

GitHub でリポジトリにアクセスする際、コマンドライン認証には HTTPSSSH の二つの方式がある。
GUIの場合、以下の方法でログイン可能だが、詳細は割愛。

  1. ブラウザ
    • ユーザー名/パスワード
    • 二要素認証 (2FA)
    • パスキー
    • SAML 認証
  2. GitHub Desktop
  3. API (OAuth, Personal Access Token, GitHub Apps)

1. HTTPS 認証

  • 認証方式: PAT (Personal Access Token)
  • 通信の暗号化: TLS/SSL
  • 初回のみPATを使用
  • 一般ユーザー向けでセットアップが簡単
  • 企業ネットワーク環境などでファイアウォールの制約を受けにくい
  • GitHub CLI で統合可能 (gh auth login で PAT を自動管理できる)
    • gh auth login を使えば、PAT を手入力する必要がなくなる
  • デメリット
    • PATをURLに直接含めると、CI/CD のログなどに記録される危険性がある
    • PAT を毎回入力する必要がある(Git の credential-store を利用すれば回避可能)
    • PAT の管理が必要(定期的な更新が必要)

HTTPS の認証手順

  1. GitHub CLI でログイン (推奨)
    gh auth login
  2. 手動で HTTPS の認証を行う場合
    git clone https://github.com/<OWNER>/<REPO>.git
    • git pushgit pull の際に、ユーザー名を入力し、パスワードの代わりに PAT を入力する
  3. PAT を環境変数で管理 (セキュリティ対策)
    export GITHUB_TOKEN="ghp_xxxxxx"
    git clone https://$GITHUB_TOKEN@github.com/<OWNER>/<REPO>.git

2. SSH 認証

  • 認証方式: 公開鍵暗号化方式
  • 通信の暗号化: SSH
  • GitHubに初回登録すれば認証の手間がなくなる
  • 秘密鍵が流出しない限り安全
  • SSH Agentを使用すると、CI/CD などのリモート環境でもGitが使用可能
  • デメリット
    • 初回セットアップが必要(SSH キーペアを生成し、GitHub に登録する)
    • ポート22 のため、ファイアウォールの影響を受ける可能性がある
      • GitHubのSSHはポート443でも利用可能
        ssh -T -p 443 git@ssh.github.comを試すことで回避できる場合がある

SSH のセットアップ手順

  1. SSH キーペアの生成
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. SSH Agent を起動
    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa

  3. 公開鍵 (~/.ssh/id_rsa.pub) を GitHub に登録

  4. SSH 接続テスト
    ssh -T git@github.com

    成功すると以下のメッセージが表示される:
    Hi <USERNAME>! You've successfully authenticated, but GitHub does not provide shell access.

3. HTTPS と SSH の比較表

項目 HTTPS SSH
認証方式 Personal Access Token (PAT) 公開鍵認証
通信の暗号化 TLS/SSL (HTTPS) SSH プロトコル
認証の手間 gh auth login で簡単に管理できるが、PAT の定期更新が必要 一度設定すればその後は不要
セキュリティ PAT の管理が必要 秘密鍵が安全なら高セキュリティ
CI/CD の対応 PAT を環境変数に持たせるなどの管理が必要 SSH Agent を利用可能
ファイアウォールの影響 ほぼ受けない(ポート 443) 企業ネットワークではポート 22 がブロックされる可能性あり
利用対象 一般ユーザー向け、セットアップが簡単 開発者・CI/CD向け、セキュリティ重視

4. どちらを使うべきか?

用途 おすすめの認証方式
セットアップを簡単に済ませたい HTTPS
セキュリティを重視したい SSH
CI/CD 環境での認証を簡単にしたい SSH
企業ネットワークで使用する HTTPS (SSHはブロックされる可能性あり)
2要素認証を有効化している SSH
一度セットアップして、以降楽に使いたい SSH

5. まとめ

  • HTTPS のメリット

    • 簡単にセットアップ可能
    • 企業のネットワークでも制約を受けにくい
    • gh auth login を使えば、認証を自動化できる
  • HTTPS のデメリット

    • PAT の管理が必要(定期的な更新)
    • セキュリティ面で SSH に劣る
  • SSH のメリット

    • 一度セットアップすれば、その後の認証が不要
    • セキュリティが高く、CI/CD での管理が楽
  • SSH のデメリット

    • 初回セットアップが必要
    • 企業のファイアウォールでポート22がブロックされる可能性がある(ポート443でも利用可能)

参考

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?