習慣更新ソフトウェアバージョンです。Gitのどのバージョンの場合にHTTPリポジトリからのコード取得が許可されないか不明ですが、以下のエラーが発生します。
fatal: Unencrypted HTTP is not supported for GitLab. Ensure the repository remote URL is using HTTPS
背景説明
環境:Windows 平台、これまで小烏龟を使ってgitを操作しており、鍵の認証も小烏龜で処理していました。以前、ローカルリポジトリを一括更新するスクリプトを作成したこともあります。
前回の記事へのリンク:[ローカルGitリポジトリの一括更新](<{{ relref “/post/2023/10-19-批量更新本地git仓库” >})
今日、帰宅してコードの更新を実行したところ、上記のエラーが発生し、リポジトリが正常に更新されなくなりました。Git
の設定でHTTPプロトコルを使用するように変更してみるのが妥当だと思って探しましたが、対応する設定項目は見つかりませんでした。
最も簡単な解決策は、SSHプロトコルに変更してリポジトリを更新することです。会社側で設定しているgitlab
は短期的にHTTPSプロトコルを提供しません。
既存の問題
以前、ローカルリポジトリをバッチ更新するためのスクリプトを作成する際に、ssh
を使ってリポジトリをプルすることを検討していたが、詳細を確認しなかった。小烏龟(TortoiseGit)で設定した git
設定情報を config に同期していなかったため、コマンドラインから
git pull # 権限がないために正常に更新できない
と表示された。
SSH キーの確認コマンド (ssh -T git@gitlab.yintech.net
) を実行しても問題なく動作するため、小烏龟(TortoiseGit)でコードをプルできるのに、コマンドラインで git pull
コマンドを実行すると SSH キーが正しくないというエラーが表示される場合、小烏龟は PuTTY の SSH 鍵を使用しているのに対し、コマンドラインは OpenSSH の SSH 鍵を使用している可能性がある。
小烏亀の秘钥設定は、システム .ssh
フォルダから秘钥ファイル情報を読み取らず、インターフェースでリポジトリ設定を行う際に、個別に秘钥ファイルのパスを設定する。このテクニックを利用すると、プルした最初のリポジトリの設定で秘钥を設定すれば、他のリポジトリも同じ秘钥ファイルを共有できる。PuTTY は秘钥をロードした後、すぐに終了せず、代理サービスを開始する。
グローバル設定を調整し、システムデフォルトの ssh
設定を使用しないようにすることで、Git Bash は TortoisePlink を使用して SSH 操作を実行するように構成する。この設定は、TortoiseGit に付属の PuTTY ツールを使用する場合に適している。
git config --global core.sshCommand "'C:/Program Files/TortoiseGit/bin/TortoisePlink.exe' -batch -ssh"
上記の実行ファイルパスを、ご自身の TortoiseGit のパスに合わせて変更してください。完全なパスを設定することで、システム環境変数に追加する必要はありません。