富山のシステム開発・Web制作会社

GitHubに接続するプロトコルをSSHからHTTPSに変更する

GitHubからSSHでcloneしているサーバー上のリポジトリで、git pullした際に失敗することがあったためSSHからHTTPSに変更することにしました。
その背景と行った手順を記載します。

手順のみ知りたい方は 2. SSH接続からHTTPS接続に変更する手順 に進んでください。

1. 背景

これまで本番サーバーにデプロイする際など、サーバーからGitHub上のリポジトリをcloneする時にはDeploy keysとSSH接続による組み合わせで行ってきました。
一度設定すれば次回以降はgit pullするだけで同期できたため便利だったのですが、デプロイ先のサーバーによってはgit pullなど実行した際に「no matching mac found〜」と出てgit pullできない問題が発生するようになりました。

これは2022年3月15日頃にGitHubが行ったセキュリティ改善により、SSH接続する場合のMAC(メッセージ認証符号)の一部(古く、安全性の低いもの)が削除されたことによるものでした。
具体的には、git pullなどを実行すると次のようなメッセージが表示され、処理が中止されます。


no matching mac found: client hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160, hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 server hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

弊社では数年前から契約している、さくらレンタルサーバー(FreeBSD9系)にて現象が発生しました。
回避方法としてはOpenSSHのバージョンを上げるかHTTPS接続に変更するかの二択になると思いますが、レンタルサーバーのOpenSSHはアップデートできないため、今回はHTTPS接続に変更することにより回避しました。
その際に行った手順について記載します。

2. SSH接続からHTTPS接続に変更する手順

1. GitHubにてaccess tokenを発行する

公式の説明の通りに操作します。
https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-token

簡易手順を記載します。

  1. GitHubにログイン→右上の自分のアイコン→Settings→Developper settings→Personal access tokens→Generate new token
  2. Noteにトークンの説明などを入力
  3. Expirationに有効期限を設定(無期限は非推奨)
  4. Select scopesは「repo」にチェック
  5. Generate tokenをクリック

2. デプロイ先のoriginのurlを変更する

  1. デプロイ先のサーバーにSSHなどで接続
  2. デプロイ先のディレクトリまで移動
  3. エディタで .git/config を開く(例:vi .git/config)
  4. [remote "origin"]のurlを次のように変更 https://ユーザー名:アクセストークン@github.com/リポジトリのパス

3. まとめ

GitHubからcloneしたリポジトリをSSH接続からHTTPS接続に変更する際の手順をご紹介しました。
なお、設定後はSSH接続と同様にgit pullするだけで同期でき便利ですが、アクセストークンに有効期限を設定した場合は期限が過ぎれば更新が必要になります。

この記事を書いた人
Chief Technology Officer

よく読まれている記事

iOS16.4のWebプッシュ通知を試す

Laravel Sailで開発環境を構築する

【jQuery】アクセスごとに動画とポスター画像をランダム表示させる方法

iPhoneのSafariでデバッグする方法

TensorFlow Lite Model Makerでカスタムモデルを作成する

LaravelとBackpackで構築した管理画面をカスタマイズする

【CSS】コンテンツ量が少ない時だけフッターを下部に固定する方法

LaravelとBackpackで管理画面を爆速で構築する

アクセス数バク上がり!MARBLEのアクセス数増加方法を大公開!

Flutter SDKのバージョンをプロジェクト別に指定する

関連記事

iOS16.4のWebプッシュ通知を試す

Laravel Sailで開発環境を構築する

【jQuery】アクセスごとに動画とポスター画像をランダム表示させる方法