GitLabをインストールしました。
Project-xというプロジェクトを作成しました。
私は少数のユーザーを作成し、プロジェクトに割り当てました。
今、私はクローンを作成しようとしました:
git clone [email protected]:project-x.git
パスワードの入力を求められました。
どのパスワードを使用すればよいですか?
パスワードの入力を求められました。
すべきではありません。project-x
へのアクセスを許可されたユーザーを表す正しい公開/秘密キーがある場合、gitlabは何も要求しません。
ただし、ssh -vT [email protected]
が最初に機能していると仮定します。
現在のシナリオと厳密には関係ありません。パスワードの入力を求められたときに、間違った* Origin形式(SSHではなくHTTPS)を追加したことが原因である場合があります
でリモート情報を表示
git remote -v
HTTP(S)アドレスの場合、これはSSHに変更するコマンドです。
git remote set-url Origin [email protected]_domain.com/example-project.git
HTTP(S)プロトコルは、強力なユーザー名+パスを使用した公開リポジトリに一般的に使用されます
SSH認証は、ssh-key-fileと単純なパスフレーズで認証できる内部プロジェクトでより一般的です
GitLabユーザーはSSHプロトコルを使用する可能性が高い
https://github.com/gitlabhq/gitlab-Shell/issues/46 からのソリューションは私のために働いた。
許可を設定することにより:
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
パスワードプロンプトが消えます。
4096ビットのキーを使用すると、この同じ問題が発生しました。
$ ssh-keygen -t rsa -C "GitLab" -b 4096
$ ssh -vT git @ gitlabhost
...
debug1:提供する公開鍵:/home/user/.ssh/id_rsa
debug1:継続できる認証:publickey、password
debug1:秘密鍵の試行:/home/user/.ssh/id_dsa
debug1:秘密鍵の試行:/home/user/.ssh/id_ecdsa
debug1:次の認証方法:パスワード
git @ gitlabhostのパスワード:
ホストによって接続が閉じられました
ただし、2048ビットキー(デフォルトサイズ)を使用すると、sshはパスワードを要求せずにgitlabに接続します(新しいpubキーをユーザーのgitlab sshキーに追加した後)
$ ssh-keygen -t rsa -C "GitLab"
$ ssh -vT git @ gitlabhost
ジョーユーザーのGitLabへようこそ!
これは、ホストの名前に「-」が含まれている場合に発生する可能性があります。 (ただし、これは RFC 952 に従って正当です。)(git 2.13.2を使用してWindows 10でGit Bashを使用してテストしました。)
sshは、名前に「-」が含まれているホストのパスワードを要求します。 〜/ .ssh/configにエイリアスを追加することで(そしてgitリモートURLでそのエイリアスを使用することで)問題が解決したため、これは純粋にssh構成ファイルの解析の問題のようです。
つまり、次のようなものをC:/ Users/{username} /。ssh/configに入れてみてください
Host {a}
User git
Hostname {a-b.domain}
IdentityFile C:/Users/{username}/.ssh/id_rsa
そしてあなたがフォームのリモコンを持っている場所
Origin [email protected]:repo-name.git
次の形式を使用するようにURLを変更します
git remote set-url Origin git@a:repo-name.git
リストにさらに別の理由を追加するために...私の場合、この問題はサーバー上のSELinuxパーミッションの問題が原因であることがわかりました。サーバーがFedora/CentOS/Red Hatを実行しているかどうかを確認する価値があります。このシナリオをテストするには、次を実行できます。
クライアント:ssh -vT git@<gitlab-server>
-パスワードを要求します
サーバー:Sudo setenforce 0
クライアント:ssh -vT git@<gitlab-server>
-成功
サーバー:Sudo setenforce 1
私の場合、gitlab/gitユーザーのauthorized_keys
ファイルには間違ったSELinuxファイルコンテキストがあり、sshサービスはそれを読み取る権限を拒否されていました。これをサーバー側で次のように修正しました。
Sudo semanage fcontext -a -t ssh_home_t /gitlab/.ssh/
Sudo semanage fcontext -a -t ssh_home_t /gitlab/.ssh/authorized_keys
Sudo restorecon -F -Rv /gitlab/.ssh/
そして、期待どおりにクライアント側でgit clone
することができました。
mac.gitlabがcentosサーバーにインストールされています。
上記のすべての方法を試してみたところ、最終的な答えが見つかりました。
違う:
ssh-keygen -t rsa
右:
ssh-keygen -t rsa -C "[email protected]" -b 4096
私の場合、デフォルトの名前id_rsa
とid_rsa.pub
を持たないキーのペアを使用していました。
これらの名前のキーを生成することで問題が解決し、実際にssh -vT my_gitlab_address
の出力を見ているとわかりました。奇妙な事実:Ubuntuを搭載した1台のコンピューターで動作しましたが、異なるディストリビューションや古いバージョンのOpenSSHを搭載した他のコンピューターでは動作しませんでした。
VS Codeで端末を使用しているWindows 10では、「git @ gitlab's password:」のプロンプトが表示されました。
git Push -u Origin --all
Windowsとgitlabでssh認証情報を確立しましたが、Windows 10 bash key-genを使用してこれを行いました。解決策は、VSコードターミナルでbashを呼び出してから、コマンドを再度発行することでした。
bash
git Push -u Origin --all
成功しました。
Bash/gitを手動で使用する必要を回避するために、Windows .ssh/id_rsaとbash Shell .ssh/id_rsaの間にシンボリックリンクを配置します。
C:\Users\bruce\.ssh>mklink id_rsa C:\Users\bruce\AppData\Local\lxss\home\bruce\.ssh\id_rsa
VS Code Gitメニューアクション(プッシュ、プルなど)がgitlabで機能するようになりました
Windowsマシンの同じソリューション:
パスワードを要求せずにクローンが成功するはずです。
私は正しい公開/秘密鍵を持っていましたが、とにかく機能しないように見えました(同じエラーが発生し、git-userパスワードの入力を求められました)。しかし、コンピューターを再起動した後はうまくいきました!
私の問題は、ロードバランサーを指すgitlab.example.com
のdnsエントリがあったことです。だから、ssh [email protected]
を試みたとき、私は本当に間違ったマシンにsshしていました。
~/.ssh/config
ファイルにエントリを作成しました。
Host gitlab.example.com
Hostname 192.168.1.50
それは多くの時間を無駄にしました...
key.pubのコンテンツをGitLabにアップロードしたことが確実な場合:1- Git Bashを開く "CMDではない" 2-ソリューションフォルダーを参照する "CDパス" 3-タイプGit Init
4-タイプGit Add .
4-タイプGit Commit
6- Git Push
と入力
そして、それは動作します..別のヒント:キーをコピーしたファイルのパスが正しいことを確認してください
通常、システムでsshを介して複数のキーをセットアップしている場合(私のデバイスはWindows 10を実行しています)、この問題が発生する可能性があります。修正は次のとおりです。
前提条件:GitLabの指示に従ってSSHキーをセットアップします
2行目の前にスペースがあることに注意してください。このソリューションが機能しないことを避けるために非常に重要です。
Windows 10マシンでは、SSH_GIT環境変数が、マシンにインストールしたPuTTY plinkを使用するように設定されていなかったためです。
Windows 10でも同じ問題が発生しました(これが関連するかどうかわかりません)。すべてが正しくセットアップされていれば、ssh -vT git@myserver
コマンドは成功しましたが、Gitlabはまだパスワードを要求しました。
Gitlabでキーを削除してから再作成することは、私にとってのトリックでした。
私は同じ問題を抱えていて、検索に多くの時間を費やしました!
Eclipseを使用してGitLabからプロジェクトをインポートするというアイデアがありました。
プロジェクトが正しくインポートされたら、次の構成を比較しました。
サプライズ:両方のケースでリモートに同じものはありません。私はEclipseのそれと同じものを渡し、すべてが動作します。