2

私はgitlabを始めました:

rvmsudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

新しいプロジェクトを作成すると、リモート リポジトリの URL が取得されます。

git remote add origin ssh://git@gitlab.mydomain.com:12035/root/my_project.git

(so not the default 22 ssh port, but 12035)

したがって、gitlab にプッシュしようとすると、次のようになります。

git push --verbose -u origin master

それから私は得る:

Pushing to ssh://git@gitlab.mydomain.com:12035/root/my_project.git
/home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:878:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)
        from /home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:878:in `open'
        from /home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:878:in `block in connect'
        from /home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/timeout.rb:52:in `timeout'
        from /home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:877:in `connect'
        from /home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
        from /home/kai/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:851:in `start'
        from /home/git/gitlab-shell/lib/gitlab_net.rb:62:in `get'
        from /home/git/gitlab-shell/lib/gitlab_net.rb:17:in `allowed?'
        from /home/git/gitlab-shell/lib/gitlab_shell.rb:60:in `validate_access'
        from /home/git/gitlab-shell/lib/gitlab_shell.rb:23:in `exec'
        from /home/git/gitlab-shell/bin/gitlab-shell:16:in `<main>'
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

したがって、通常のユーザーと gitlab の 2 人のユーザーがいkaiますgit。しかし、gitlabユーザーには.sshディレクトリがありません。しかし、gitlab にプッシュしようとしているリモート マシンから ssh キーを既に追加しています。キーは次のように追加さ~/.ssh/configれます。

Host gitlab.mydomain.com
        User admin@local.host
        # User Administrator
        IdentityFile ~/.ssh/gitlab_rsa

PS

エラーに関連するすべての同様の質問をここですでに調べました。しかし、答えが得られなかったか、役に立たなかった

アップデート:

/var/log/auth.log最後のgit push試行の行:

Oct 13 06:53:04 80-69-77-159 sudo:  kai : TTY=pts/2 ; PWD=/home/git/gitlab ; USER=root ; COMMAND=/usr/bin/less /var/log/auth.log
Oct 13 06:53:04 80-69-77-159 sudo: pam_unix(sudo:session): session opened for user root by kai(uid=0)

したがって、すべての可能なユーザーがそこに表示されます。どういう意味ですか?

更新 2:

私はgitlab-shellを次のようにチェックしました:

sudo -u git -H /home/git/gitlab-shell/bin/check

そして同じを得ました:

http.rb:878:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)

私はその後に変更gitlab_urlhttpsましたconfig.yml

sudo -u git -H nano /home/git/gitlab-shell/config.yml

gitlab_url: "http://gitlab.udesk.org/" -> gitlab_url: "https://gitlab.udesk.org/"

今私はから得ますsudo -u git -H /home/git/gitlab-shell/bin/check

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

今、何が問題になっているのでしょうか?

更新 3:

次に、 を in に変更しself_signed_cert: falseましself_signed_cert: true/home/git/gitlab-shell/config.yml

今私はから得ますsudo -u git -H /home/git/gitlab-shell/bin/check

Check GitLab API access: OK
Check directories and files: 
    /home/git/repositories: OK
    /home/git/.ssh/authorized_keys: OK

しかし、まだプッシュできません:

Pushing to ssh://git@gitlab.mydomain.com:12035/root/my_project.git
Access denied.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

更新 4:

テスト ssh 行が機能するようになったことに気付きました。

> ssh -vT -p 12035 git@gitlab.mydomain.com

debug1: Authentication succeeded (publickey).
Authenticated to gitlab.mydomain.com ([x.x.x.x]:12035).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Forced command.
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Remote: Forced command.
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
Welcome to GitLab, Administrator!
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3264, received 3248 bytes, in 0.7 seconds
Bytes per second: sent 4782.6, received 4759.2
debug1: Exit status 0

更新 5:

/home/git/gitlab-shell/gitlab-shell.log対応する行git push --verbose -u origin masterは次のとおりです。

W, [2013-10-13T15:18:05.276231 #24654]  WARN -- : gitlab-shell: Access denied for git command <git-receive-pack '/root/myproject.git'> by user with key key-1.

それでも何が問題になる可能性がありますか?

4

4 に答える 4

2

デフォルトでは unicorn は on をリッスンするように設定されて127.0.0.1:8080(/home/git/gitlab/config/unicorn.rb)いるため、次のようgitlab_urlに設定する必要がありますhttp://yourURL:8080/

于 2013-11-14T23:44:59.103 に答える
1

これは古い投稿だと思いますが、一般的なインターネット知識ベースのためです.apache2のプロキシ仮想ホストを使用して、最新バージョンのgitlabセットアップでこのエラーを取得しましたが、nginxにも適用されます.

OK、同じ問題が発生しました-これが私がそれを解決した方法です;

/home/git/gitlab/config/unicorn.rb で

行を見つける

# listen on both a Unix domain socket and a TCP port,
# we use a shorter backlog for quicker failover when busy
listen "/home/git/gitlab/tmp/sockets/gitlab.socket", :backlog => 64
listen "127.0.0.1:8080", :tcp_nopush => true

最後の行を次のように変更します

listen "0.0.0.0:8080", :tcp_nopush => true

そのため、ローカル マシンからだけでなく接続も受け入れます。

于 2014-07-14T08:35:05.557 に答える
1

実行した後(gitlabのあるサーバー上):

> pwd # just to get context
    /home/git/gitlab

> sudo -u git -H /home/git/gitlab-shell/bin/gitlab-keys clear
> sudo -u git -H bundle exec rake gitlab:shell:setup RAILS_ENV=production

次に、git remote を削除し、再度追加しました (ローカル サーバー上で git repo を使用して gitlab にプッシュします)。

> git remote remove origin
> git remote add origin ssh://git@gitlab.mydomain.com:12035/root/myproject.git

次にプッシュしようとしました:

> git push --verbose -u origin master

Pushing to ssh://git@gitlab.mydomain.com:12035/root/myproject.git
Counting objects: 401, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (289/289), done.
Writing objects: 100% (401/401), 1.05 MiB | 98.00 KiB/s, done.
Total 401 (delta 127), reused 0 (delta 0)
To ssh://git@gitlab.mydomain.com:12035/root/myproject.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
updating local tracking ref 'refs/remotes/origin/master'  

今:

> cat /home/git/gitlab-shell/gitlab-shell.log

I, [2013-10-13T15:38:49.332477 #24935]  INFO -- : gitlab-shell: executing git command <git-receive-pack /home/git/repositories/'/root/myproject.git'> for user with key key-1.
I, [2013-10-13T15:40:00.037092 #24958]  INFO -- : Update head in project root/myproject.git to <master>.

ここで本当の問題が何であるかはわかりませんが、段階的に調査しようとすると役に立ちました (最初に gitlab_url の問題を修正し、次に ssh をリポジトリで動作させ、最後に git を適切に動作させます)。これらの手順がいくつかの同様の問題を解決するのに役立つことを願っています(たとえば、更新で名前が付けられています)

于 2013-10-13T13:51:25.860 に答える
1

繰り返しますが、これがどこかで誰かに役立つことを願って。私はこれと同じ問題を抱えていましたが、提案された解決策はどれもうまくいきませんでした。具体的には、私は HTTPS を気にしませんし、私の GitLab は Apache の背後でプロキシされていません。

私のgitlab-shellの設定にはgitlab_url: http://hostname:9999/. 私の gitlab/config/unicorn.rb にはlisten "10.80.40.169:9999". gitlab_urlそのため、 unicorn.rb ( ) に一致するように変更しただけでgitlab_url: http://10.80.40.169:9999/、すべてが機能します。

于 2014-07-17T13:49:47.223 に答える