Gitlab không hoạt động với SSH Keys


10

Tôi đang gặp vấn đề với Gitlab. Tôi đã sử dụng hướng dẫn sau để cài đặt và định cấu hình Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md . Việc cài đặt dường như diễn ra tốt đẹp và tất cả. Các ứng dụng web dường như đang hoạt động tốt. Tuy nhiên tôi không thể sao chép, kéo, đẩy, về cơ bản tôi không thể sử dụng Gitlab. Tôi đã thấy 403 lỗi với HTTP và quyền bị từ chối khi cố gắng sao chép SSH.

Tôi đã đảm bảo các khóa riêng của mình được thiết lập chính xác trên cả Windows và OS X. Tôi có thể thấy các khóa chung trên máy chủ. Tôi đã thêm phần sau vào tệp cấu hình của mình trong ~ / .ssh.config

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

Đây là những gì tôi thấy trong / var / log / safe

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

Các /var/log/messagekhông vai trò khi tôi đã cố gắng sử dụng git hoặc ssh

Tôi không chắc chắn nơi để đi từ đây. Bất kỳ đề xuất?

Tôi không biết ý của bạn khi SSH sử dụng tên người dùng git. Hướng dẫn tôi đã sử dụng không tạo mật khẩu cho người dùng git và nói rằng người dùng không thể được sử dụng để đăng nhập.


Bạn có thể SSH đến máy chủ Git với tư cách là người dùng 'git' không? Bạn có thể thử thêm tham số '-vvv' để có thêm đầu ra về lý do tại sao kết nối bị đóng không? Cũng có thể đáng để kiểm tra các tệp / var / log / safe và / var / log / message để xem có lỗi nào trong đó không.
jaseeey

Khóa công khai không được thiết lập trên máy khách - bạn cần đảm bảo rằng khóa riêng của bạn nằm trên máy khách của bạn. Khóa công khai đi trên máy chủ.
EEAA

Cập nhật câu hỏi của tôi. Hy vọng rằng sẽ giúp
greyfox

Câu trả lời:


10

Miễn là bạn đã tải khóa riêng của mình trên máy khách, thì có vẻ như đây có thể là sự cố về quyền trên thư mục nhà của người dùng 'git' và thư mục .ssh.

Vui lòng thử thay đổi thư mục / home / git của bạn thành mặt nạ 0711:

chmod 0711 /home/git

Đảm bảo thư mục /home/git/.ssh có mặt nạ 0700:

chmod 0700 /home/git/.ssh

Đảm bảo tệp /home/git/.ssh/authorized_keys có mặt nạ là 0600:

chmod 0600 /home/git/.ssh/authorized_keys

Thay thế / home / git bằng bất cứ thư mục chính nào của bạn cho người dùng 'git', nếu nó khác trong hướng dẫn. Nếu đó không phải là quyền, xin vui lòng cho phép nhận xét và chúng tôi sẽ xem vấn đề nào khác có thể xảy ra.


Đó có thể là vấn đề. Tôi biết có thể sao chép bằng git clone git @ {hostname}: {workspace} / {repository} trên máy Mac của tôi. Thật không may, tôi đã để máy Windows của mình làm việc vì vậy tôi sẽ cần dùng thử vào ngày mai. Có phải xác thực khóa chung / riêng không hoạt động trên HTTP với Gitlab? Tôi đã có ấn tượng đó là cách Github làm việc nhưng tôi có thể sai về điều đó.
greyfox

Xác thực khóa công khai / riêng tư chỉ hoạt động trên SSH. Nếu bạn sử dụng HTTP, bạn sẽ cần sử dụng tên người dùng và mật khẩu của mình để làm bất cứ điều gì. Nếu bạn đang sử dụng phiên bản Git mới, như v1.8, thì nó sẽ nhắc bạn nhập tên người dùng và mật khẩu. Các phiên bản cũ hơn của Git không làm điều này, vì vậy bạn phải thêm tên người dùng và mật khẩu nội tuyến của điều khiển từ xa (tức là https://username:password@git.server.com/repo.git)
jaseeey

Ahhhh điều đó có ý nghĩa hơn nhiều bây giờ. Vậy ứng dụng GitHub cho Windows có lưu trữ thông tin đăng nhập không? Cảm ơn rất nhiều vì sự giúp đỡ!
greyfox

Tôi chưa sử dụng ứng dụng GitHub Windows nhiều, nhưng tôi nghĩ từ bộ nhớ, nó yêu cầu đăng nhập khi bạn mở nó, vì vậy tôi sẽ nói rằng lưu trữ thông tin đăng nhập để giúp bạn tiết kiệm thời gian nhập chúng.
jaseeey

1

Kiểm tra xem bạn chỉ có một bản ghi cho khóa công khai của bạn (được nhập qua mặt web) /home/git/.ssh/authorized_keysvà khóa này có tiền tố và tiêu đề của gitlab. Nói cách khác, nếu bạn đã thêm cùng một khóa theo cách thủ công trước khi cài đặt gitlab thì hãy xóa nó.


Bạn có thể có nhiều khóa trong đó và bạn sẽ có thể đăng nhập với điều kiện khóa riêng của bạn có thể khớp với ...
jaseeey

@Jason, tôi vừa chỉnh sửa để giải thích chính xác hơn
sinm

Cảm ơn bạn, đây là nó cho tôi. Tôi đã đặt khóa ssh của mình vào thủ công trước khi sử dụng Gitlab để thêm khóa và các khóa trùng lặp gây ra sự cố.
6ft Dan

1

Tôi cũng khuyên bạn nên kiểm tra xem người dùng có được phép sao chép / kéo / đẩy trong gitlab hay không. Tôi đã dành quá nhiều thời gian để xem qua các cấu hình ssh / https, khi lý do vấn đề là người dùng trong gitlab không có đủ quyền ...


1

Trong tình huống của tôi, tôi đã cài đặt gitlab thông qua các gói FreeBSD. Gitlab SSH không hoạt động. Nguyên nhân của việc này là một thư mục nhà sai cho git: (vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

Tôi đã thay đổi điều này thành:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

Điều này có thể xảy ra nếu máy chủ có '-' trong tên của nó. (Mặc dù điều này là hợp pháp theo RFC 952. )

ssh nhắc tôi nhập mật khẩu cho bất kỳ máy chủ nào có dấu '-' trong tên của nó. Đây dường như hoàn toàn là một vấn đề với phân tích tệp cấu hình ssh vì việc thêm bí danh vào ~ / .ssh / config (và sử dụng bí danh đó trong url git từ xa của tôi) đã giải quyết vấn đề.

Nói cách khác, hãy thử đặt một cái gì đó như sau vào C: / Users / {username} /. Ssh / config của bạn

Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

và nơi bạn có một điều khiển từ xa của mẫu

origin  git@a-b.domain:repo-name.git

loại bỏ nó và sau đó thêm lại bằng cách sử dụng mẫu

origin  git@a:repo-name.git

1

Nếu bạn đang sử dụng các biến môi trường để truyền khóa, bạn nên mã hóa64, nếu không chúng có thể sẽ bị lỗi khi yêu cầu cụm mật khẩu của bạn. Điều này có nghĩa là chìa khóa bị hỏng. Nếu bạn thấy:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

Sau đó, Base64 mã hóa biến SSH_PRIVATE_KEY. Nếu bạn đang dùng OS X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

sẽ mã hóa nó và sao chép nó vào clipboard của bạn. Bây giờ sau đó thay đổi dòng tập lệnh .gitlab-ci.yml thành

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

Vấn đề của tôi là tệp khóa riêng id_rsa được tạo và lưu bởi puttygen có định dạng khác với định dạng được tạo từ máy ubfox. Sau khi tôi tạo một cặp khóa từ máy ubfox, hãy sao chép các tệp này trở lại máy Windows trong thư mục% UserProfile% .ssh, sau đó thêm khóa công khai mới được tạo vào Gitlab. Không còn quyền từ chối cho tôi

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.