Nhận quyền từ chối (khóa công khai) trên gitlab


134

Vấn đề của tôi là tôi không thể đẩy hoặc lấy từ GitLab. Tuy nhiên, tôi có thể sao chép (thông qua HTTP hoặc qua SSH). Tôi gặp lỗi này khi tôi cố gắng đẩy:

Quyền bị từ chối (khóa công khai) gây tử vong: Không thể đọc từ kho lưu trữ từ xa

Từ tất cả các chủ đề tôi đã xem, đây là những gì tôi đã làm:

  • Thiết lập khóa SSH trên máy tính của tôi và thêm khóa chung vào GitLab
  • Xong cấu hình --global cho tên người dùng và email
  • Nhân bản qua SSH và qua HTTP để kiểm tra xem nó có giải quyết được sự cố không
  • Thực hiện lệnh ssh -T git@gitlab.com

Nếu bạn có cái nhìn sâu sắc về cách giải quyết vấn đề của tôi, nó sẽ được đánh giá rất cao.


5
chạy ssh -vvvv git@gitlab.comđể xem nó có lấy khóa SSH không
Nils Werner

1
Bạn đã thêm khóa SSH qua gitlab.com/profile/keys chưa?
Akram Giá vé

@ Nils Werner: Tôi nhận được rất nhiều dòng khi tôi thực hiện lệnh này, nhưng một trong số đó là "Xác thực thành công (khóa công khai)"
Alexandre Fernandes Bartolomeu

4
hãy chắc chắn rằng bạn không chạy sudo git clone git@gitlab.com:project/somethiing.git, nếu không ssh sẽ nhìn vào /root/.sshthay vì khóa bạn đã tải lên~/.ssh/id_rsa
Rivanov

1
Tôi đã giải quyết vấn đề tương tự bằng cách thêm khóa vào tác nhân thông qua "ssh-add ~ / .ssh / the_key", sau đó cho phép họ khóa theo cụm từ. Đây là phần riêng tư của những gì tôi đã thêm vào GitLab.
Celdor

Câu trả lời:


257

Tôi tìm thấy điều này sau khi tìm kiếm rất nhiều. Nó sẽ làm việc hoàn toàn tốt cho tôi.

  1. Chuyển đến "Git Bash" giống như cmd. Nhấp chuột phải và "Chạy với tư cách Quản trị viên".
  2. Kiểu ssh-keygen
  3. Nhấn nút Enter.
  4. Nó sẽ yêu cầu bạn lưu khóa vào thư mục cụ thể.
  5. Nhấn nút Enter. Nó sẽ nhắc bạn nhập mật khẩu hoặc nhập mà không cần mật khẩu.
  6. Khóa công khai sẽ được tạo vào thư mục cụ thể.
  7. Bây giờ đi đến .sshthư mục và mở thư mục.
  8. Bạn sẽ thấy một tập tin id_rsa.pub. Mở nó trên notepad. Sao chép tất cả văn bản từ nó.
  9. Truy cập https://gitlab.com/profile/keys .
  10. Dán ở đây trong trường văn bản "chính".
  11. Bây giờ bấm vào "Tiêu đề" bên dưới. Nó sẽ tự động được lấp đầy.
  12. Sau đó bấm "Thêm khóa".

Bây giờ cho nó một shot và nó sẽ hoạt động chắc chắn.


2
Trong trường hợp bạn bị mất trong việc sao chép tập tin pub vào clipboard. thử các cách sau:type %userprofile%\.ssh\id_rsa.pub | clip
jquijano

5
trong windows 10 nếu bạn cần tìm .ssh \ id_rsa.pub, bạn có thể nhập con mèo này ~ / .ssh / id_rsa.pub trên git bash, nó sẽ hiển thị cho bạn "Khóa", vì vậy bạn có thể sao chép và dán nó vào trường văn bản trong gitlab.com/profile/keys
Chutipong Roobklom

11
Đảm bảo thực hiện việc này: ssh-add filename(có đường dẫn nếu không có trong rsa dir) sau khi làm theo các bước trên
Blasanka

3
Làm việc như người ở. Cảm ơn.
brduca

3
Tôi đã làm điều này, vấn đề không được khắc phục, bị từ chối cấp phép
Billal Begueradj

62

Bước 1: Đã thêm một tệp cấu hình trong ~/.ssh/configtệp trông giống như

   User git
   Hostname gitlab.com
   IdentityFile ~/.ssh/id_rsa_gitlab
   TCPKeepAlive yes
   IdentitiesOnly yes

Bước 2: Chỉ cần sao chép git repo mà không sudo.
Tài liệu: https://gitlab.com/help/ssh/README#usiness-with-non-default-ssh-key- Pair-path


1
Điều này là bắt buộc nếu tệp khóa có tên mặc định đã được sử dụng cho các mục đích khác nhau. Nếu bạn đang tạo một tệp khóa có tên không mặc định, như id_rsa_gitlabtrong ví dụ của Fedo, bạn sẽ cần cung cấp tệp cấu hình. Bài viết hay của Gitlab về vấn đề này: gitlab.com/help/ssh/ Kẻ
Dany

Điều này làm việc cho tôi. Tôi đã có cả khóa Github & Gitlab, để bạn giải pháp này.
M.Cush

Tôi phải thay đổi Hostnameđể Hostlàm cho nó hoạt động
Sadee

27

Tôi nghĩ giải pháp đơn giản là thêm khóa riêng vào tác nhân xác thực (nếu khóa của bạn không ~/.ssh/id_rsa),

ssh-add ~/.ssh/<your private key>

Bạn cơ bản để cho việc ssh-agentchăm sóc nó.

Ngoài ra, bạn có thể thêm nó vĩnh viễn .


đó là tệp có phần mở rộng .pub
Felipe

7
Không. Khóa riêng là tệp không có .pubphần mở rộng.
Hussain

15

Trong trường hợp của tôi, nó không hoạt động trong WSL (Hệ thống con Windows cho Linux).

Khi tôi khởi động WSL, tôi phải

  • bắt đầu ssh-agent_ eval $(ssh-agent -s)
  • thêm khóa vào tác nhân ssh: ssh-add ~/.ssh/id_rsa
  • nếu được nhắc, hãy nhập mật khẩu

Bây giờ kết nối hoạt động.
Chúng tôi có thể kiểm tra điều này vớissh -T git@github.com

ghi chú:


11

đảm bảo bạn không chạy sudo git clone git@gitlab.com:project/somethiing.git, nếu không ssh sẽ nhìn vào /root/.sshthay vì khóa bạn đã tải lên~/.ssh/id_rsa


9

Có một giải pháp rất đơn giản cho việc này: thay vì làm việc với ssh - chuyển sang https. để làm điều này: trong thư mục dự án của bạn, bạn có một thư mục .git trong đó - bạn có một tệp cấu hình - mở nó trong một trình soạn thảo văn bản và thay đổi dòng

url =git@gitlab.com: yourname / yourproject.git

đến

url = https://gitlab.com/yourname/yourproject.git


Cảm ơn bạn. Đã làm cho tôi.
ktv6

7

nếu bạn đang dùng Linux hoặc macox, hãy thử cái này trong terminal:

ssh-add -l

nếu nó không trả về gì, hãy thử điều này:

ssh-add

nó phải tạo danh tính trong ~ / .ssh / id_rsa

sau khi thử lại:

ssh-add -l

nó phải trả lại danh tính của bạn, vì vậy sau khi thử lại để sao chép, nó phải hoạt động

Lưu ý: đừng quên thêm khóa ssh trong hồ sơ của bạn gitlab

cảm ơn


5

Trong trường hợp của tôi, đó không phải là vấn đề gitlab, mà là cấu hình sshd. Máy chủ ssh không cho phép kết nối ngoại trừ danh sách người dùng. Người dùng git, người kết nối từ xa với gitlab, không có trong danh sách đó. Vì vậy, hãy kiểm tra điều này trước bất cứ điều gì khác.

Bạn có thể kiểm tra cấu hình máy chủ ssh của bạn trong /etc/ssh/sshd_config. Nếu bạn có một dòng với tùy chọn AllowUsers, hãy thêm git vào nó:

AllowUsers user1 user2 user3 git

3

Tôi có gitlab chạy với docker, đây là những gì tôi đã làm để khắc phục vấn đề của mình.

Tìm thấy rằng bên trong docker / var / log / gitlab / sshd / current có nhiều lần xuất hiện của một thông báo:

Xác thực bị từ chối: quyền sở hữu hoặc chế độ xấu cho tệp /var/opt/gitlab/.ssh/authorized_keys

Sau đó, tôi đã thay đổi quyền sở hữu tệp đó từ 99: người dùng thành git: người dùng với:

chown git: người dùng ủy quyền


1
Cảm ơn bạn rất nhiều. Tôi đang chạy Gitlab trên Kubernetes và thư mục / gitlab-data (cũng là điểm gắn kết cho ủy quyền) có vấn đề về quyền. Một chown đơn giản là đủ.
Dillen Meijboom

3

Các bước để được thực hiện, có lỗi tương tự nhưng tôi đã sửa nó. Gitlab muốn ssh-rsa vì vậy bên dưới là mã để chạy ssh cho rsa

  1. ssh-keygen -o -t rsa -b 4096 -C "name@gmail.com"

name @ gmail là email tài khoản gitlab của bạn

  1. Nó sẽ nhắc bạn nhập vì vậy chỉ cần nhấn Enter sau khi đoạn mã dưới đây được nhắc,

    Nhập tệp để lưu khóa (/home/yourDesktopName/.ssh/id_rsa):

  2. Nó sẽ nhắc bạn nhập lại một lần nữa, vì vậy hãy nhấn Enter sau khi đoạn mã dưới đây được nhắc,

    Nhập cụm mật khẩu (trống không có cụm mật khẩu):

  3. Nó sẽ nhắc lại lần cuối cùng để bạn nhập, vì vậy hãy nhấn Enter sau khi đoạn mã dưới đây được nhắc,

    Nhập lại cụm mật khẩu một lần nữa:

  4. Bạn sẽ hiển thị ssh-rsa của bạn tạo ra.

  5. Đăng nhập vào tài khoản Gitlab của bạn và Chuyển đến thanh điều hướng bên phải, bạn sẽ nhận được cài đặt và ở thanh bên trái, bạn sẽ nhận được khóa ssh. Nhập vào nó.

  6. Nhìn phía trên lời nhắc yêu cầu bạn nhập, bạn sẽ nhận được đường dẫn của ssh-rsa.

  7. Chuyển đến thư mục SSH của bạn và nhận id_rsa.pub

  8. Mở nó và nhận chìa khóa và Copy Paste vào Gitlab và bạn sắp hoàn thành.

  9. Kiểm tra bởi: ssh -T git@gitlab.com

  10. Bạn sẽ nhận được: Welcome to GitLab, @joy4!

  11. Làm xong.


cảm ơn. cái này hoạt động trên windows 10. Tôi đã thử ed25519 như gitlab đã hướng dẫn nhưng không hoạt động.
Dika

Câu trả lời này là khá tốt - không chắc tại sao nó không được bình chọn cao hơn.
mgibson

3

Trước đây nó rất khó đối với tôi nhưng khi tôi thử, việc thêm khóa ssh trong Mac và Linux trở nên quá dễ dàng. Có một vài bước và lệnh để làm điều này như sau:

  1. Mở một thiết bị đầu cuối của hệ thống của bạn và di chuyển bên trong thư mục dự án của bạn bằng lệnh:
cd 'project directory name'
  1. Chạy lệnh ssh-keygentrong thiết bị đầu cuối đó và nhập nó cho đến khi hình ảnh ngẫu nhiên của khóa xuất hiện ở đó.

  2. Sau đó nhập thêm một lệnh trong thiết bị đầu cuối đó:

cat ~/.ssh/id_rsa.pub

Nó sẽ tạo khóa ssh của bạn. Key sẽ bắt đầu ssh-rsavà kết thúc bằng .local.

  1. Sao chép khóa và đi đến phần hồ sơ Gitlab của bạn sau đó ssh keyphần và dán nó ở đó. Nhấn vào Addnút này sẽ hoạt động.

Điều này làm việc cho tôi! cảm ơn
Shamseer Ahammed

2

Tôi gặp vấn đề tương tự, tôi đã giải quyết nó bằng cách thêm khóa ssh mới:

  1. ssh-keygen -t ed25519 -C "email@example.com"
  2. Sao chép khóa SSH công khai của bạn vào bảng tạm ( xclip -sel clip < ~/.ssh/id_ed25519.pubtrong trường hợp của tôi trên Linux)
  3. Trên gitlab, đi đến settings=>sshcác phím và qua khóa mới

2

Khi bạn có nhiều tài khoản git và bạn muốn khóa ssh khác nhau

Bạn phải làm theo cùng một bước để tạo khóa ssh, nhưng hãy chắc chắn rằng bạn

ssh-keygen -t ed25519 -C "your-email-id@gmail.com" 

Nhập đường dẫn bạn muốn lưu (Ví dụ: my-pc / Desktop / .ssh / ed25519)

Thêm khóa công khai vào gitlab của bạn ( Cách thêm khóa ssh vào gitlab )

Bạn phải nhận dạng ssh mới bằng cách sử dụng comand dưới đây

ssh-add ~/my-pc/Desktop/.ssh/ed25519

2

Hai điều chủ yếu

  1. Bạn phải có các khóa id_rsa.pub và id_rsa (riêng tư) trong thư mục .ssh của bạn (cần có trong thư mục nhà của bạn. Tạo nó nếu không có khóa của bạn). Nó sẽ không hoạt động nếu bạn đã đặt tên cho các tệp chính của mình theo cách khác

  2. Thay đổi quyền của id_rsa là chmod 400 ~ / .ssh / id_rsa


2

Một vấn đề khác có thể gây ra hành vi này là khi bạn có một thiết lập với 2 tỷ lệ% HOME% có thể.

Tôi đang sử dụng PC nơi một số tài liệu của tôi được lưu trữ cục bộ và một số tài liệu được lưu trữ trên ổ đĩa mạng. Một số ứng dụng nghĩ C:\Users\<MyUserName>\là của tôi %home%, những người khác nghĩ rằng đó U:\là nhà.

Hóa ra ssh-keygenđặt khóa riêng của tôi dưới C:\users\<MyUserName>\, và đó ssh -Tssh -vcũng nhìn vào đó.

Vì vậy, mọi thứ dường như hoạt động tốt, ngoại trừ điều đó git clone, git pushvà những người khác tìm kiếm một chìa khóa trong U:\. Mà không thành công, vì vậy tôi nhận được lỗi nói trên.

Tôi đã mất một giờ để tìm hiểu, nhưng cuối cùng giải pháp rất đơn giản: tôi sao chép tất cả mọi thứ từ C:\Users\<MyUserName>\.sshđếnU:\.ssh


1

Tôi đã giải quyết như thế này ..

Tạo khóa cho Windows bằng lệnh này:

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

nhưng vấn đề là sau khi chạy lệnh này, nó đã hiện ra một dòng: "Nhập tệp để lưu khóa (/c/Users/xxx/.ssh/id_rsa):" Ở đây, tôi chỉ đưa ra tên tệp vì trong đó chìa khóa của tôi đã được lưu trong pwd của tôi và không ở vị trí nhất định. Khi tôi thực hiện "git clone", nó đã giả sử khóa ở vị trí "/c/Users/xxx/.ssh/id_rsa" nhưng không tìm thấy, do đó nó bị lỗi.

Tại thời điểm tạo 2 tệp, tệp được tạo là "file1" & "file1.pub". Tôi đã đổi tên cả hai tập tin này thành

file1 -> id_rsa 

file1.pub -> id_rsa.pub

và đặt cả hai ở vị trí "/c/Users/xxx/.ssh/"


1

Đi đến thiết bị đầu cuối và tạo lại khóa ssh một lần nữa. Loại ssh-keygen. Nó sẽ hỏi bạn muốn lưu nó ở đâu, gõ đường dẫn.

Sau đó sao chép khóa công khai vào nền tảng gitlabs. Nó thường bắt đầu với ssh-rsa.


1

Vấn đề đối với tôi là, tôi chuyển UsePAMtừ yesđể notrong file cấu hình SSH dưới /etc/ssh/sshd_config. Với UsePAM yesmọi thứ hoạt động hoàn hảo.


1

Tôi tìm thấy giải pháp trong gitlab giúp đỡ .

To create a new SSH key pair: 
 1. Open a terminal on Linux or macOS, or Git Bash / WSL on Windows.
 2. Generate a new ED25519 SSH key pair: ssh-keygen -t ed25519 -C "email@example.com"
 2.1 Or, if you want to use RSA: ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
 3. Next, you will be prompted to input a file path to save your SSH key pair to... use the suggested path by pressing Enter
 4. Once the path is decided, you will be prompted to input a password to secure your new SSH key pair. It's a best practice to use a password, but it's not required and you can skip creating it by pressing Enter twice.
 5. Copy your public SSH key to the clipboard by using one of the commands below depending on your Operating System:
        macOS:        pbcopy < ~/.ssh/id_ed25519.pub
        WSL / GNU/Linux (requires the xclip package):      xclip -sel clip < ~/.ssh/id_ed25519.pub
        Git Bash on Windows:      cat ~/.ssh/id_ed25519.pub | clip
 6. Navigating to SSH Keys and pasting your public key in the Key field
 7. Click the Add key button

Tôi hy vọng nó có thể giúp một số bạn!


1

Làm cách nào để thêm khóa SSH vào tài khoản gitlab trong Ubuntu?

  1. Mở terminal trong thư mục dự án của bạn.
  2. Nhập 'ssh-keygen -o -t rsa -b 4096 -C "email gitlab của bạn"' và nhấn enter
  3. Nhập 'vim /home/mnbtech/.ssh/id_rsa.pub' và nhấn enter (hoặc mở thủ công 'id_rsa.pub'from nơi bạn đã lưu nó)
  4. Khóa SSH sẽ xuất hiện. Sao chép chúng và

  5. Chuyển đến tài khoản gitlab của bạn.

  6. Nhấp vào hình ảnh hồ sơ Và nhấp vào cài đặt
  7. Ở bên trái chọn SSH-Keys
  8. Sau đó dán các phím đó Bấm thêm khóa

SSH-Key sẽ được thêm vào!

(NB nếu bạn đã tạo Khóa xem trước SSH và bị từ chối cấp phép (khóa chung). Bạn xóa khóa ssh Xem trước của bạn và Tạo khóa mới và thêm git user.name và email trên thiết bị đầu cuối của bạn)


Điều gì khác biệt trong câu trả lời đó so với các hướng dẫn trước?
RalfFriedl

1

Tôi đã giải quyết git@gitlab.com: Permission denied (publickey)vấn đề bằng cách sử dụng các hướng dẫn sau

  1. CHẠY cat ~/.ssh/id_rsa.pub
  2. Sao chép id_rsa.pub(khóa chung) vào getlab của bạn `Cài đặt -> Khóa SSH
  3. CHẠY cat ~/.ssh/id_rsa
  4. Sao chép id_rsa(khóa riêng) vào `Code_Vpo-> git_auth-> id_rsa

LƯU Ý: Chăm sóc người dùng máy nếu bạn đang sử dụng rootngười dùng trong DockerFile hoặc bất cứ nơi nào khác sau đó sử dụng sudo sutrước khi chạy các lệnh trên để nhận khóa công khai và khóa riêng của người dùng gốc.


1

Trong trường hợp của chúng tôi, đó không phải là vấn đề ở phía người dùng / máy khách, nhưng ở phía máy chủ Gitlab.

Chúng tôi đang chạy một phiên bản Gitlab CE 12.9 cục bộ trên CentOS 7.1.

Chúng tôi phát hiện ra rằng trên máy chủ, tệp .ssh / ủy quyền không được cập nhật đúng cách. Người dùng tạo các khóa SSH của họ (theo hướng dẫn Gitlab) và thêm nó vào máy chủ Gitlab, nhưng máy chủ không cập nhật ủy quyền , do đó sẽ luôn dẫn đến các lỗi bị từ chối cấp phép.

Một cách giải quyết là xây dựng lại tệp ủy quyền bằng cách chạy:

$ sudo gitlab-rake gitlab:shell:setup

Điều đó sẽ làm việc cho bất cứ ai đã thêm khóa của họ trước khi chạy tác vụ cào. Đối với những người dùng tiếp theo sẽ thêm khóa của họ, ai đó phải tự chạy lại các tác vụ cào.

Một giải pháp lâu dài hơn là không sử dụng tệp ủy quyền và thay vào đó sử dụng tra cứu được lập chỉ mục trên cơ sở dữ liệu Gitlab :

GitLab Shell cung cấp một cách để ủy quyền cho người dùng SSH thông qua việc tra cứu nhanh, được lập chỉ mục cho cơ sở dữ liệu GitLab. GitLab Shell sử dụng dấu vân tay của khóa SSH để kiểm tra xem người dùng có được phép truy cập GitLab hay không.

Thêm vào sau vào sshd_configtập tin của bạn . Điều này thường được đặt tại /etc/ssh/sshd_config, nhưng sẽ là /assets/sshd_confignếu bạn đang sử dụng Omnibus Docker:

Match User git    # Apply the AuthorizedKeysCommands to the git user only   
  AuthorizedKeysCommand /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-authorized-keys-check git %u %k   
  AuthorizedKeysCommandUser git 
Match all    # End match, settings apply to all users again 

Tải lại OpenSSH:

# Debian or Ubuntu installations   
sudo service ssh reload

# CentOS installations   
sudo service sshd reload 

Xác nhận rằng SSH đang hoạt động bằng cách xóa khóa SSH của người dùng của bạn trong giao diện người dùng, thêm một khóa mới và cố gắng kéo một repo.

Theo mặc định (cũng là mặc định trong cài đặt của chúng tôi), tệp Write to ủy quyền_key đã được kiểm tra trong Khu vực quản trị> Cài đặt tối ưu hóa hiệu suất . Vì vậy, chúng tôi đã bỏ chọn và sử dụng cơ sở dữ liệu Gitlab thay thế.

nhập mô tả hình ảnh ở đây

Sau khi thiết lập tra cứu được lập chỉ mục và bỏ chọn tệp Write to ủy quyền , quyền truy cập SSH đã ổn.


1

Đối với bất kỳ ai sử dụng Windows 10 và không có gì khác làm việc cho anh ấy / cô ấy:

Trong trường hợp của tôi, tôi đã phải sao chép repo bằng https thay vì ssh và một cửa sổ bật lên yêu cầu thông tin đăng nhập của tôi. Sau đó mọi thứ hoạt động tốt.


1

Tôi biết, tôi đang trả lời điều này rất muộn và thậm chí StackOverflow đã xác nhận nếu tôi thực sự muốn trả lời. Tôi đang trả lời vì không ai thực sự mô tả vấn đề thực tế nên muốn chia sẻ như vậy.

Những thứ cơ bản

Trước tiên, hãy hiểu rằng điều gì ở xa. Remote là GitLab và hệ thống của bạn là cục bộ nên khi chúng ta nói về điều khiển từ xa origin, bất kỳ URL nào được đặt trong git remote -vđầu ra của bạn là URL từ xa của bạn.

Các giao thức

Về cơ bản, Git clone / đẩy / kéo hoạt động trên hai giao thức khác nhau chủ yếu (cũng có các giao thức khác) -

  1. Giao thức HTTP
  2. Giao thức SSH

Khi bạn sao chép một repo (hoặc thay đổi URL từ xa) và sử dụng URL HTTP như https://gitlab.com/wizpanda/backend-app.git thì nó sử dụng giao thức đầu tiên tức là giao thức HTTP.

Trong khi nếu bạn sao chép repo (hoặc thay đổi URL từ xa) và sử dụng URL như thế git@gitlab.com:wizpanda/backend-app.gitthì nó sẽ sử dụng giao thức SSH.

Giao thức HTTP

Trong giao thức này, mọi thao tác từ xa tức là sao chép, đẩy và kéo đều sử dụng xác thực đơn giản tức là tên người dùng và mật khẩu của điều khiển từ xa (GitLab trong trường hợp này) có nghĩa là đối với mọi thao tác, bạn phải nhập tên người dùng và mật khẩu có thể cồng kềnh .

Vì vậy, khi bạn đẩy / kéo / sao chép, GitLab / GitHub xác thực bạn bằng tên người dùng và mật khẩu của bạn và nó cho phép bạn thực hiện thao tác.

Nếu bạn muốn thử điều này, bạn có thể chuyển sang URL HTTP bằng cách chạy lệnh git remote set-url origin <http-git-url>.

Để tránh trường hợp đó, bạn có thể sử dụng giao thức SSH.

Giao thức SSH

Một kết nối SSH đơn giản hoạt động trên các cặp khóa công khai. Vì vậy, trong trường hợp của bạn, GitLab không thể xác thực bạn vì bạn đang sử dụng URL SSH để liên lạc. Bây giờ, GitLab phải biết bạn theo một cách nào đó. Để làm được điều đó, bạn phải tạo một cặp khóa công khai và cung cấp khóa chung cho GitLab.

Bây giờ khi bạn đẩy / kéo / sao chép bằng GitLab, GIT (SSH bên trong) theo mặc định sẽ cung cấp khóa riêng của bạn cho GitLab và xác nhận danh tính của bạn và sau đó GitLab sẽ cho phép bạn thực hiện thao tác.

Vì vậy, tôi sẽ không lặp lại các bước đã được Muhammad đưa ra, tôi sẽ lặp lại chúng theo lý thuyết.

  1. Tạo một cặp khóa `ssh-keygen -t rsa -b 2048 -C" Khóa SSH chung của tôi "
  2. Cặp khóa được tạo sẽ theo mặc định ~/.sshcó tên id_rsa.pub(khóa chung) & id_rsa(khóa riêng).
  3. Bạn sẽ lưu trữ khóa chung vào tài khoản GitLab của mình (cùng một khóa có thể được sử dụng trong nhiều hoặc bất kỳ máy chủ / tài khoản nào).
  4. Khi bạn sao chép / đẩy / kéo, GIT cung cấp khóa riêng của bạn.
  5. GitLab khớp với khóa riêng với khóa chung của bạn và cho phép bạn thực hiện.

Lời khuyên

Bạn phải luôn tạo một khóa rsa mạnh với ít nhất 2048 byte. Vì vậy, lệnh có thể được ssh-keygen -t rsa -b 2048.

https://gitlab.com/help/ssh/README#generating-a-new-ssh-key- Pair

Tư tưởng chung

Cả hai cách tiếp cận đều có ưu và nhược điểm của họ. Sau khi tôi gõ văn bản trên, tôi đã đi tìm kiếm thêm về điều này bởi vì tôi chưa bao giờ đọc một cái gì đó về điều này.

Tôi tìm thấy tài liệu chính thức này https://git-scm.com/book/en/v2/Git-on-the-Server-The-Prot Protocol nói thêm về điều này. Quan điểm của tôi ở đây là, bằng cách đọc lỗi và suy nghĩ về lỗi, bạn có thể tự đưa ra lý thuyết hoặc hiểu và sau đó có thể khớp với một số kết quả của Google để khắc phục sự cố :)



0

Tôi sử dụng Ubuntu 18.04 và đó thực sự là vấn đề cấp phép trong máy cục bộ của tôi. Vấn đề đã biến mất khi tôi đặt quyền đọc / ghi vào thư mục .git của mình.


0

Vâng, tôi đã có vấn đề tương tự và sau khi thử câu trả lời @Khan đề xuất. Tuy nhiên, tôi chỉ có thể làm cho nó hoạt động bằng cách chỉ thay đổi url gốc trong tệp .git / config thành địa chỉ https: https://gitlab.com/mygitlabusername/mygitproject.git

Vì quyền truy cập qua ssh bị từ chối, tôi nghĩ rằng sử dụng https không phải là vấn đề. Tuy nhiên, nó sẽ yêu cầu tên người dùng và mật khẩu của bạn cho mỗi lần đẩy vào kho lưu trữ


0

Vui lòng sử dụng git config credential.helper storenếu trang web của bạn đang sử dụng TLS / SSL. Hy vọng điều này làm việc


0

Dường như có sự khác biệt giữa hai cách để truy cập kho git tức là sử dụng SSH hoặc HTTPS. Đối với tôi, tôi đã gặp phải lỗi vì tôi đang cố gắng đẩy kho lưu trữ cục bộ của mình bằng SSH.

Vấn đề có thể được giải quyết đơn giản bằng cách nhấp vào nút nhân bản trên trang đích của dự án của bạn và sao chép liên kết HTTPS và thay thế nó vào liên kết SSH xuất hiện với định dạng "git @ gitlab ...".


Điều đó không trả lời câu hỏi.
RalfFriedl

0

Thay đổi quyền :: chmod 400 ~ / .ssh / id_rsa Nó giúp 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.