確かに、私はこれに非常に遅く答えています。本当に答えたいのであれば、StackOverflowでさえ確認しました。実際の問題を誰も実際に説明しておらず、同じことを共有したかったので、私は答えています。
基礎
最初に、ここでリモートとは何かを理解します。リモートはGitLabであり、システムはローカルであるため、リモートについて話すときorigin
、git remote -v
出力に設定されているURLはすべてリモートURLです。
プロトコル
基本的に、Git clone / push / pullは主に2つの異なるプロトコルで動作します(他にもあります)。
- HTTPプロトコル
- SSHプロトコル
リポジトリを複製して(またはリモートURLを変更して)、https: //gitlab.com/wizpanda/backend-app.gitのようなHTTPs URLを使用する場合使用すると、最初のプロトコル、つまりHTTPプロトコルが使用されます。
一方、リポジトリのクローンを作成して(またはリモートURLを変更して)、URLをgit@gitlab.com:wizpanda/backend-app.git
使用すると、SSHプロトコルが使用されます。
HTTPプロトコル
このプロトコルでは、すべてのリモート操作、つまりクローン、プッシュ、プルは、シンプルな認証、つまり、リモート(この場合はGitLab)のユーザー名とパスワードを使用します。つまり、すべての操作で、ユーザー名とパスワードを入力する必要があります。 。
したがって、プッシュ、プル、クローンを作成すると、GitLab / GitHubがユーザー名とパスワードで認証し、操作を実行できるようになります。
これを試したい場合は、コマンドを実行してHTTP URLに切り替えることができますgit remote set-url origin <http-git-url>
。
このような状況を回避するには、SSHプロトコルを使用できます。
SSHプロトコル
単純なSSH接続は、公開鍵と秘密鍵のペアで機能します。したがって、あなたの場合、SSH URLを使用して通信しているため、GitLabはあなたを認証できません。今、GitLabは何らかの方法であなたを知っている必要があります。そのためには、公開鍵と秘密鍵のペアを作成し、公開鍵をGitLabに渡す必要があります。
GitLabでプッシュ、プル、クローンを作成すると、GIT(SSH内部)はデフォルトで秘密鍵をGitLabに提供して身元を確認し、GitLabで操作を実行できるようになります。
ですから、ムハンマドによってすでに与えられているステップを繰り返さないで、理論的にそれらを繰り返します。
- 鍵ペア `ssh-keygen -t rsa -b 2048 -C" My Common SSH Key "を生成します
- 生成された鍵ペアは、デフォルトで
~/.ssh
名前付きid_rsa.pub
(公開鍵)&id_rsa
(秘密鍵)になります。
- 公開鍵をGitLabアカウントに保存します(同じ鍵を複数のサーバーまたは任意のサーバー/アカウントで使用できます)。
- クローン/プッシュ/プルすると、GITが秘密鍵を提供します。
- GitLabは秘密鍵を公開鍵と照合し、実行できるようにします。
チップ
常に2048バイト以上の強力なrsaキーを作成する必要があります。したがって、コマンドは次のようになりますssh-keygen -t rsa -b 2048
。
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
一般的な考え
どちらのアプローチにも長所と短所があります。上記のテキストを入力した後、これについて何かを読んだことがないので、これについてさらに検索しました。
これについて詳しく説明しているこの公式ドキュメントhttps://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocolsを見つけました。ここでの私のポイントは、エラーを読んでエラーについて考えることにより、独自の理論や理解を行い、Googleの結果と照合して問題を修正できるということです。
ssh -vvvv git@gitlab.com
SSHキーを取得するかどうかを確認するために実行