Những gì quyền truy cập của người Viking có thể chặn quyền truy cập vào kho lưu trữ gitlab?


14

Tôi đang cố gắng thiết lập gitlab (6.5.1) trên một máy chủ sạch mới. Mọi thứ dường như hoạt động, nhưng git không thể đẩy vào bất kỳ dự án nào. Thực hiện theo các lệnh từ trang dự án mới được tạo và đẩy đến điều khiển từ xa thông qua ssh cho:

$ git push -u origin master
fatal: Could not read from remote repository.

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

Đây dường như là một vấn đề khá phổ biến. Thật không may, nó dường như có một số nguyên nhân tiềm năng và không ai trong số chúng dường như phù hợp. Từ vấn đề 3424 về một bản phát hành cũ và nhiều nguồn khác trực tuyến tôi đã xem và kiểm tra các đề xuất sau:

  • Phím ssh còn lại

    Đây là một thiết lập sạch sẽ không có thức ăn thừa. Khóa của tôi đã được thêm vào tệp khóa được ủy quyền đúng cách và là khóa duy nhất được liệt kê.

  • Chạy ssh với ghi nhật ký gỡ lỗi hiển thị các lỗi liên quan đến vars môi trường Ruby.

    Của tôi đi lên sạch sẽ. Gỡ lỗi SSH cho thấy một kết nối thành công. Tất cả mọi thứ về bắt tay xác thực là bình thường, sau đó đây là kết thúc của đầu ra:

    debug1: Sending command: git-receive-pack 'username/reponame.git'
    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
    debug1: channel 0: free: client-session, nchannels 1
    debug1: fd 0 clearing O_NONBLOCK
    debug1: fd 1 clearing O_NONBLOCK
    
  • Các vấn đề với môi trường vỏ gitlab.

    Không giống như nhiều người khác có cùng thông báo lỗi ở trên, tập lệnh kiểm tra gitlab-shell của tôi trả về một hóa đơn sạch:

    % sudo -u gitlab -H ~gitlab/gitlab-shell/bin/check   
    Check GitLab API access: OK
    Check directories and files: 
            /var/lib/gitlab/repositories: OK
            /var/lib/gitlab/.ssh/authorized_keys: OK
    Test redis-cli executable: redis-cli 2.8.5
    Send ping to redis server: PONG
    
  • Khởi động lại {unicorn, sidekiq, redis}

    Các báo cáo khởi động lại một hoặc nhiều dịch vụ sẽ xóa điều này dường như không áp dụng ở đây. Đây không phải là một vấn đề không liên tục mà sửa chữa một daemon sửa chữa.

  • Các repo không được tạo ra vật lý

    Nhưng nó là. Lần đầu tiên mỗi lần, repo git trần ~gitlab/repositories/username/reponame.gitđược tạo ra mỗi lần và dường như có quyền chính xác.

  • Gitlab-shell không thể nói chuyện với máy chủ API vì A) sự cố DNS, B) liên kết ip / port / giao diện sai C) không có / có dấu gạch chéo.

    Kịch bản kiểm tra cho biết truy cập API là tốt.

    Tôi không chạy nginx, vì vậy vấn đề ràng buộc ip mặc định liên quan đến vấn đề đó là n / a.

    Tôi đã thử cả hai *:8080127.0.0.1:8080cho giá trị nghe trong unicorn.yml.

    Ngoài ra, tôi đã thử nhiều lần lặp khác nhau của localhost, 127.0.0.1 và tên miền đủ điều kiện (được DNS giải quyết tốt) có và không có dấu gạch chéo shell.ymlkhông có kết quả. Tôi cũng đã thử kết nối trực tiếp với máy chủ kỳ lân trên cổng 8080 thay vì máy chủ SSL / proxy Apache trên cổng 80. Dường như không có gì khác biệt. Chứng chỉ của tôi không tự ký và đang hoạt động tốt cho các trình duyệt, nhưng self_signed_cert: truedù sao tôi cũng đã thử cài đặt . Không có gì.

  • Các đường dẫn git được báo cáo là sai, thêm đường dẫn đủ điều kiện từ nhà người dùng gitlab.

    Đây có vẻ là một đề xuất hợp pháp nếu gitlab-shell không thực hiện một số thao tác khỉ để sửa lỗi này, nhưng tôi đã thử thay đổi git remote add origin gitlab@server:username/reponame.gitthành `` git remote add origin gitlab @ server: reporiesories / username / reponame.git`. Cùng một lỗi.

Đây có vẻ là một loạt các giải pháp được đề xuất, nhưng không ai trong số họ có vẻ đúng. Lưu ý tôi có thể đẩy qua http. Dấu nhắc đăng nhập chấp nhận tên người dùng và mật khẩu ldap của tôi và chấp nhận đẩy. Đây chỉ là một vấn đề khi cố gắng sử dụng SSH. Chỉ kiểm tra phần đăng nhập ssh với ssh -T gitlab@serverhoạt động tốt.

Điều gì khác có thể gây ra lỗi này?

Làm thế nào để một người đi về gỡ lỗi một vấn đề như vậy trong gitlab? Dường như không có gì liên quan cả ~gitlab/gitlab-shell/gitlab-shell.log. Trường hợp một thông báo lỗi thông tin hơn sẽ được tìm thấy?


Đầu ra của: "ssh -vv gitlab @ server" là gì?
DrGkill

@DrGkill Không có gì thú vị (trong mắt tôi), hãy tự mình xem .
Caleb

Xem trong sshd_config của bạn nếu gitlab được phép đăng nhập bên ngoài. Tôi có thể nói 2 thủ phạm có thể xảy ra: SSH hoặc gitlab-shell. Auth.log nói gì khi gitlab đang kết nối?
DrGkill

@DrGkill Tôi đã kiểm tra xem (và nếu nó không được phép đăng nhập bên ngoài bằng sshd hoặc pam các nhật ký tôi đã trình bày ở trên thì sẽ không hiển thị thông báo xác thực thành công). SSH đang kết nối tốt. Nhật ký phía máy chủ hiển thị xác thực thành công, rằng một phiên đã được mở, một số nội dung hệ thống về việc thiết lập env của người dùng, sau đó "nhận ngắt kết nối từ <ip từ xa>" và một số nội dung khác về dọn dẹp phiên.
Caleb

Câu trả lời:


7

Tôi khá chắc chắn rằng bạn có vấn đề về cấu hình giữa SSH và hệ thống do thông báo gỡ lỗi SSH này:

client_input_channel_req: channel 0 rtype eow@openssh.com reply 0

Bạn nhận được thông báo này ngay lập tức sau khi xác thực thành công và không có tin nhắn nào từ bash, điều đó có nghĩa là không có chương trình nào được khởi chạy sau khi đăng nhập.

Xem trong tệp passwd của bạn nếu bạn có các cài đặt phù hợp cho người dùng gitlab:

gitlab:x:1011:1012:GitLab,,,:/path/to/gitlab:/bin/bash

Xác minh bash không có gì lạ trong các tệp cấu hình như

  • bash.bashrc
  • .Hồ sơ
  • .bashrc

Sau đó, đi lên cấp độ nâng cấp: Gitlab-shell Xác minh /path/to/gitlab/.ssh/authorized_keys có cấu hình bên dưới:

command="/path/to/gitlab/gitlab-shell/bin/gitlab-shell key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa A...

với / path / to / gitlab / gitlab-shell / bin / gitlab-shell thuộc sở hữu của người dùng gitlab và có thể thực thi được.

Bạn có thể chắc chắn gitlab-shell hoạt động đầy đủ bằng cách khởi chạy lệnh:

# /path/to/gitlab-shell/bin/gitlab-shell
Welcome to GitLab, Anonymous!

Nếu đăng nhập từ xa thực sự hoạt động và được kết nối đúng với gitlab-shell, bạn sẽ nhận được thông báo chào mừng tương tự (nhưng khớp với người dùng có khóa ssh bạn đã sử dụng để đăng nhập) trước khi bạn đăng xuất nếu bạn cố đăng nhập từ xa.

$ ssh gitlab@server
Welcome to GitLab, <your user's full name>!
Connection to <server> closed.

Không có tin nhắn nào ở đây có thể chỉ ra rằng ssh không kết nối bạn với gitlab.

Cuối cùng, hãy kiểm tra cấu hình gitlab-shell của bạn (config.yml) và xác minh xem:

http_settings:
    # trailing slash is important
    gitlab_url: "https://remote_server/"
    ca_file: /path/to/webserver/certificate.crt

và cuối cùng :

    self_signed_cert: false

Doh. <head-Desk> Bạn đã đi đúng hướng. Người dùng gitlab đã được chỉ định /bin/false. Gói Arch không đặt shell đúng khi thêm người dùng đó hoặc tôi đã phá vỡ nó ở đâu đó trong quá trình thực hiện xác thực ldap trên hệ thống này. Cảm ơn tất cả các nỗ lực.
Caleb

ty trả lời, giúp tôi gỡ lỗi. Một vấn đề khác là khi bạn bật chức năng chuyển tiếp khóa ssh, bạn gửi khóa sai tới gitlab không thể nhận dạng bạn. Khi bạn ssh vào gitlab, bạn cũng sẽ nhận được Chào mừng ẩn danh. Chỉ cần vô hiệu hóa chuyển tiếp khóa trên máy chủ nhảy của bạn với ssh -a
tommics

Tôi gặp vấn đề tương tự như Caleb và bản thân tôi cũng nhận thấy rằng để làm cho nó hoạt động, người ta cần đặt một vỏ thay vì / bin / {false, true, nologin}. Nhưng thực tế người dùng được tạo mà không có mục đích trong quá trình cài đặt (xem: gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/ tựa ) sudo adduser --disabled-login --gecos 'GitLab' git. Vì vậy, nó nên làm việc mà không có vỏ. Tôi vẫn đang tìm kiếm một giải pháp khác.
Huygens

0

Tôi đã gặp vấn đề tương tự và sau nhiều ngày tìm kiếm và tìm kiếm Stack Overflow, cuối cùng tôi cũng tìm thấy vấn đề của mình. Tôi muốn có được điều này bằng văn bản kết nối với Gitlab chỉ trong trường hợp người khác có cùng vấn đề.

Tôi đã tìm thấy giải pháp của mình tại đây: /programming/17307154/git-bash-push-to-bitbucket-ignores-ssh-key

Tôi đang dùng Windows và vấn đề là Git Bash đã cố lấy vị trí khóa SSH của nó từ plink.exe, được cài đặt với Putty.

Giải pháp là xóa biến môi trường GIT_SSH. Sau đó, mọi thứ đã làm việc.

Hy vọng điều này sẽ giúp ai đó ngoài kia.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.