• GitHub

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

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するだけで同期でき便利ですが、アクセストークンに有効期限を設定した場合は期限が過ぎれば更新が必要になります。

  • GitHub
宮野 比伊呂

MIYANO HIIRO Chief Technology Officer / 宮野 比伊呂

記事をもっと見る

Our Signature Products, Born from Insight.

提案から生まれた、
MARBLEの代表プロダクト

お客様の課題を起点に、MARBLEが自ら構想し、
仕組みからデザイン、開発、運用まで一貫してつくり上げたプロダクト群です。
業務改善、運営効率化、新たな顧客体験の創出など、
企業の事業成長に直結する“実装された解決策”を形にしています。

  1. 01 入退場システム

    Entry System

    入退場システムのイメージ

    全国15店舗、会員数50万人以上のこども向けパークで稼働する入退場・決済・顧客管理システム。
    受付の効率化と回転率の向上を実現し、運営データの一元管理を可能にしています。

  2. 02 自動配送システム

    Delivery Routing

    50台のトラック、年間350日の配送を最適化する自動ルート生成システム。
    紙のFAXで届く約500件の配送情報をデジタル化し、最適ルートを自動で算出することで、大幅な業務効率化を実現しました。

  3. 03 会話型コマース連携

    Auto Routing

    ライブチャットでの接客からEC購入までを一つの導線でつなぐ会話型コマースシステム。
    リアルタイムの対話で顧客の購買意欲を高め、高いコンバージョン率につながる仕組みを構築しています。