そこで、先日、忘れていたGitLabアカウントを使用して、LinuxハンドブックのWebサイトに対して行ったすべてのカスタマイズを保存および追跡することを考えました。
GitLab Webインターフェイスに新しいリポジトリを作成し、個人システムにあるディレクトリをプッシュしました。
コードをGitHubのリモートリポジトリにプッシュしようとするまでは、すべて問題ありませんでした。 「xyzリポジトリの認証に失敗しました」という致命的なエラーが発生しました。
エラーは次のようになりました:
[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_profile_username
[email protected]':
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository/'
同様の問題が発生している場合は、このエラーを修正する方法を紹介します。
GitLabでの「リモート:HTTP基本:アクセスが拒否されました」エラーの処理
このエラーの根本的な原因についての手がかりを与える主な行は次のとおりです。
remote: HTTP Basic: Access denied
なぜ私はそれを言うのですか? GitLabリポジトリがHTTPSを使用しているためです。システムとリポジトリの間に安全な接続があることを期待しています。
さて、HTTPSを自動的に使用するべきではありませんか?いいえ!もうありません。
GitLabはポリシーを変更し、独自のSSHキーを使用してGitLabリポジトリで認証することを想定しています。
つまり、ローカルシステムからリモートのGitLabリポジトリにコードをプッシュするには、SSHキーペアを作成し、公開キーをGitLabプロファイルに追加する必要があります 。
私はLinuxを使用しているので、Linuxで手順を実行するのが最適です。 WindowsまたはmacOSを使用している場合は、ヒントを参考にして、オペレーティングシステムで同じことを行う方法を確認する必要があります。
まず、SSHキーがすでにあるかどうかを確認します:
ls ~/.ssh/id_rsa.pub
お持ちでない場合は、次のセクションを使用して作成してください。そうでない場合は、このセクションの後のセクションにジャンプしてください。
SSHキーの作成(まだ持っていない場合)
私はUbuntuを使用しているので、手順はUbuntu用です。他のディストリビューションを使用している場合、手順は異なる場合と異なる場合があります。
ターミナルを開き、次のコマンドを使用します。
ssh-keygen
次のような出力が表示されます:
Generating public/private rsa key pair.
Enter file in which to save the key (/user_home/.ssh/id_rsa):
Enterキーを押して、デフォルトの選択を選択します。 SSHキーを保護するためにパスワードの入力を求められる場合があります。パスワードを設定すると、生成されたSSHキーを使用してSSH接続を確立しようとするたびにパスワードを入力する必要があります。 SSHキーのパスワードを設定する場合としない場合があります。
GitLabに公開SSHキーを追加する
パーソナルコンピュータでSSHキーを作成した場合は、ほとんどのLinuxディストリビューションのホームディレクトリの下にある.sshディレクトリにあります。次のコマンドでコンテンツを表示します:
cat ~/.ssh/id_rsa.pub
公開鍵の内容をコピーします。次に、GitLabアカウントにログインし、[ユーザー設定]に移動して、左側のサイドバーでSSHキーを探します。または、ログイン時にこのページに移動することもできます。
公開鍵を追加するためのフィールドが表示されます。ここにキーを貼り付けるだけです。このキーがどのコンピューターに属しているかを簡単に識別できるように、タイトルを付けてください。自分で何かをした場合を除いて、SSHキーにはデフォルトで有効期限がありません。したがって、有効期限フィールドはそのままにしておきます。
すべてで終わりましたか? [キーを追加]ボタンを押します。
複数のSSHキーを追加できます。複数のコンピューターを使用している場合、これは正常です。
そこで、SSHキーをGitLabプロファイルに追加しました。物事は今良いはずです。確認する時間です。
コードをもう一度プッシュしてみてください。それが機能するかどうかを確認します。通常、成功すると次のような出力が表示されます。
[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_account_username
Password for 'https://[email protected]':
Enumerating objects: 127, done.
Counting objects: 100% (127/127), done.
Delta compression using up to 4 threads
Compressing objects: 100% (122/122), done.
Writing objects: 100% (127/127), 401.30 KiB | 6.37 MiB/s, done.
Total 127 (delta 14), reused 0 (delta 0)
remote: Resolving deltas: 100% (14/14), done.
To https://gitlab.com/gitlab_account_username/gitlab_repository.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
それでもエラーが表示されますか? GitLabプロファイルのユーザー名とアカウントのユーザー名の違いに注意してください!
私はそれを難しい方法で学びました。
GitLabには、プロファイルユーザー名とアカウントユーザー名の2つのユーザー名があります。
プロファイルのユーザー名は、影響を与えることなく簡単に変更できます。ただし、アカウントのユーザー名を変更すると、壊滅的な事態が発生する可能性があります。
アカウントのユーザー名は、GitLabリポジトリのURLに表示されるものです:
https://gitlab.com/gitlab_account_username/repository_name
GitLabは、そのWebサイトから新しいGitLabリポジトリを作成する際に、パーソナルコンピューターのGit構成設定でプロファイルのユーザー名を使用することを提案しました。
私はそれを行い、コードをリポジトリにプッシュするときに同じプロファイルのユーザー名を使用しようとしました。当然のことながら、SSHキーを追加した後でも拒否されました:
[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_profile_username
Password for 'https://[email protected]':
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository.git/'
したがって、ここでGitLabアカウントのユーザー名を使用するのがコツです。それを行ったとき、リモートGitLabリポジトリへのプッシュは成功しました。
それはあなたのために働きましたか?
さて、私は自分の試練をGitLabリポジトリにコードをプッシュすることと共有しました。これが「致命的:認証に失敗しました」というエラーにも役立つことを願っています。
それはあなたのために働きましたか?コメントセクションで「はい」または「いいえ」で知らせてください。