L ERI nổi tiếng của Git: Quyền cho phép .git bị từ chối đối với người dùng


118

Tôi đã thử googling và đọc qua https://help.github.com/en/articles/connecting-to-github-with-ssh và nhiều hướng dẫn khác nhau. Tôi không thể git push -u origin masterhoặc git push origin master(cùng một lệnh).

Tôi đã có tài khoản git của mình trong ít nhất 2 năm. Tôi đã thành công trong việc tạo repos và push -u origin mastertốt trên máy tính xách tay của mình nhưng trên máy tính để bàn này tôi gặp sự cố.

Đây là những gì tôi đã thử:

1. Tôi đã thiết lập tên người dùng git của mình

2. Tôi đã thiết lập email người dùng git của mình

3. Tôi đã tải lên nội dung của /home/meder/.ssh/id_rsa.pub lên trang tài khoản của github. Tôi đã xác minh tôi không dán bất kỳ khoảng trắng nào

4. Tôi đã tạo một ~ / .ssh / config với các nội dung sau:

  Host github.com
  User git
  Hostname github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa

Tôi đã chỉnh sửa .ssh thành 700, id_rsa 600

5. Tôi đã thêm nguồn gốc từ xa thích hợp mà không mắc lỗi chính tả :git remote add origin git@github.com:medero/cho.git

6. Để xác nhận # 5, đây là .git / config của tôi. Thư mục đúng và không phải thư mục khác:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:medero/cho.git

7. ssh git@github.com -v cho tôi xác thực thành công

8. Một điều kỳ lạ là, tên người dùng mà tôi chào đón đã tgắn với nó. Tên người dùng github của tôi là medero, không medert.

Xin chào! Bạn đã xác thực thành công, nhưng GitHub không cung cấp quyền truy cập shell.

9. Tôi không đứng sau proxy hoặc tường lửa

10. Chìa khóa được cung cấp, đây là đầu ra từ -v:

debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/meder/.ssh/known_hosts:58
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/meder/.ssh/id_rsa
debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: { some stuff, dont know if i should share it

debug1: Remote: Forced command: gerve mederot
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).

11. Đây là các lệnh tôi đã sử dụng

mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin git@github.com:medero/cho.git
git push -u origin master

12. Tôi không muốn tạo khóa SSH mới.

13. Nếu tôi git clone bằng ssh và thực hiện chỉnh sửa, cam kết và git đẩy, tôi sẽ nhận được điều tương tự chính xác.

14. Đây là lỗi thực tế:

$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly

15. Tôi đã thiết lập tên người dùng github và mã thông báo github của mình:

$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token Đặt mã thông báo GitHub cho tất cả các trường hợp git trên hệ thống

16. Tôi đã xác nhận tên người dùng github của tôi là KHÔNG mederotvà mã thông báo github của tôi LÀ ĐÚNG trên mỗi trang tài khoản của tôi (xác nhận 2 ký tự đầu tiên và 2 ký tự cuối cùng).

17. Để xác nhận # 16, ~ / .gitconfig chứa

[github]
    token = mytoken...
    user = medero

18. Tôi đã làm ssh-key add ~/.ssh/id_rsanếu điều đó thậm chí cần thiết ...



LÝ THUYẾT:

Tôi nghi ngờ có điều gì đó đáng nghi bởi vì khi tôi nhận được ssh xác thực, lời chào của người dùng mederotvà không medero, đó là acct của tôi. Có thể một cái gì đó trong tài khoản github của tôi có thể được lưu trữ không chính xác?

Tôi cũng nghi ngờ một số sự kỳ lạ của bộ nhớ đệm ssh cục bộ bởi vì nếu tôi mv ~/.ssh/id_rsa KAKAmv ~/.ssh/id_rsa.pub POOPOO, và ssh git@github.com -vnó vẫn xác thực tôi và nói rằng nó phục vụ /home/meder/.ssh/id_rsa của tôi khi tôi đổi tên?! Nó phải được lưu trữ?!


Tôi đang sử dụng "Github cho Windows" và gặp vấn đề tương tự khi chuyển đổi giữa hai tài khoản Github. Đây là giải pháp của tôi: stackoverflow.com/questions/18565876/ từ
Alisa

Câu trả lời:


35

Ở bước 18, tôi giả sử bạn có ý ssh-add ~/.ssh/id_rsagì? Nếu vậy, điều đó giải thích điều này:

Tôi cũng nghi ngờ một số điều lạ về bộ nhớ đệm ssh cục bộ bởi vì nếu tôi mv ~ / .ssh / id_rsa KAKA và mv ~ / .ssh / id_rsa.pub POOPOO, và làm ssh git@github.com -v, nó vẫn xác thực tôi và nói rằng nó phục vụ tôi /home/meder/.ssh/id_rsa của tôi khi tôi đổi tên nó?! Nó phải được lưu trữ?!

... Vì ssh-agentbộ nhớ đệm của bạn.

Nếu bạn xem trên GitHub, có một tài khoản mederot . Bạn có chắc chắn rằng điều này không liên quan gì đến bạn? GitHub không nên cho phép cùng một khóa công khai SSH vào hai tài khoản, vì khi bạn đang sử dụng các git@github.com:...URL, nó sẽ xác định người dùng dựa trên khóa SSH. (Điều này không được phép được xác nhận ở đây .)

Vì vậy, tôi nghi ngờ (theo thứ tự khả năng giảm) rằng một trong những điều sau đây là trường hợp:

  1. Bạn đã tạo tài khoản mederot trước đó và thêm khóa SSH của mình vào đó.
  2. Một số người khác đã nhận được một bản sao của khóa công khai của bạn và thêm nó vào tài khoản GitHub của mederot.
  3. Có một lỗi khủng khiếp trong GitHub.

Nếu 1 không phải là trường hợp thì tôi sẽ báo cáo điều này với GitHub, để họ có thể kiểm tra khoảng 2 hoặc 3.

Hơn :

ssh-add -l kiểm tra nếu có nhiều hơn một định danh tồn tại nếu có, hãy xóa nó bằng ssh-add -d "tệp khóa đó"


Giúp đỡ rất nhiều Mark! Điều này đã sửa nó cho tôi là tốt.
Leachy Peachy

Đây chính là nó. Bạn đã cứu tôi một cơn đau đầu rất lớn. Bây giờ tôi chỉ cần nhớ chạy ssh-add ...mỗi lần tôi muốn chuyển thông tin đăng nhập github / ssh của mình.
Cerin

Vì một số lý do ssh-add -d <keyfile>không hoạt động. (Xóa thủ công các tệp tyhe đã làm.) Bộ nhớ đệm bạn đã đề cập phải được tải lại thủ công bằng cách nào đó. Làm sao?
not2qubit

ssh-add -d-> "Không thể mở kết nối đến tác nhân xác thực của bạn."
alex

Đó ssh-addlà bit đã làm điều đó cho tôi. Cảm ơn!
rayryeng

158

Sau khi Googling vài ngày, tôi thấy đây là câu hỏi duy nhất tương tự như tình huống của tôi.

Tuy nhiên, tôi chỉ giải quyết vấn đề! Vì vậy, tôi đang đặt câu trả lời của mình ở đây để giúp bất cứ ai khác tìm kiếm vấn đề này.

Đây là những gì tôi đã làm:

  1. Mở "Keychain Access.app" (Bạn có thể tìm thấy nó trong Spotlight hoặc LaunchPad)

  2. Chọn "Tất cả các mục" trong Danh mục

  3. Tìm kiếm "git"

  4. Xóa mọi mục cũ & lạ

  5. Cố gắng đẩy lại và nó chỉ làm việc


17
Thumbs up bạn thân. Bạn là một anh hùng.
Hoàng tử Bansal

1
Đúng vậy, cuối cùng, sau khi vật lộn với vô số khóa SSH, đây là câu trả lời có hiệu quả! Có vẻ như truy cập Mac và https sử dụng Keychain. Khùng.
Patrick Chu

1
BLESS YOU IVE ĐƯỢC THAM GIA GIẢI QUYẾT NÀY CHO WEEKS
Jon Hendershot

1
Trông rất hữu ích, nhưng không rõ là gì old & strange. Có phải tôi sắp làm hỏng một đống đồ đạc không ..?
địa lý

1
@geotheory Những old & strangeđiều này có nghĩa là các mục ngày cũ và email hoặc tên người dùng không chính xác. Bạn có thể sắp xếp bảng theo Date Modified.
Alice Chan

91

Nếu sự cố xảy ra trên windows thì hãy xóa Thông tin xác thực khỏi lịch sử Windows.

  • Chuyển đến Trình quản lý thông tin xác thực
  • Chuyển đến Thông tin Windows
  • Xóa các mục trong Thông tin chung
  • Hãy thử kết nối lại. Lần này, nó sẽ nhắc bạn nhập tên người dùng và mật khẩu chính xác.

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

xóa thông tin đăng nhập khỏi git


2
Hoàn hảo. Tôi đã nhận được 403 lượt truy cập bằng tài khoản mà tôi không sử dụng nữa. Bây giờ giải quyết xong.
Anton Epikhin

1
chỉ xóa thông tin đăng nhập của github.com là đủ đối với tôi
Bart De Boeck

Và ở đó bạn có thể thay đổi tên người dùng của bạn và bất cứ điều gì. Đó chính là cách giải quyết.
WesternGun

22

Trên Mac, nếu bạn có nhiều thông tin đăng nhập GitHub và không sử dụng SSH, hãy buộc đăng nhập chính xác bằng cách sử dụng:

git remote set-url origin https://username@github.com/username/repo-name.git

Điều này cũng hoạt động nếu bạn gặp vấn đề khi đẩy sang một kho lưu trữ riêng.


1
Cảm ơn, điều này đã làm việc cho tôi. Nó nhắc tôi nhập mật khẩu và tôi đã có thể đẩy sau khi tôi cung cấp mật khẩu của mình. Nhiều đánh giá cao!
pixel

... nhưng điều này không giải quyết được vấn đề cho tôi trên Windows, chỉ trên Mac
pixel

... nhưng @Fahid gợi ý ở trên để dọn dẹp thông tin đăng nhập trên Windows đã giúp
pixel

Bạn là một anh hùng.
Vaibhav

Đây là câu trả lời đúng nếu chúng tôi có nhiều dự án github thuộc các tài khoản khác nhau
Gangadhar JANNU

14

Nó do một cuộc xung đột.

Xóa tất cả các khóa từ ssh-agent

ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/github

Thêm khóa sith github

ssh-add   ~/.ssh/github

Nó nên hoạt động ngay bây giờ.


3
cũng ssh-add -Dloại bỏ tất cả các danh tính, có thể hữu ích nếu tác nhân rơi vào trạng thái không hợp lệ.
Sâm

6

Tôi đang sử dụng Mac và vấn đề được giải quyết bằng cách xóa bản ghi github khỏi ứng dụng truy cập móc khóa: Đây là những gì tôi đã làm:

  1. Mở "Keychain Access.app" (Bạn có thể tìm thấy nó trong Spotlight hoặcLaunchPad)
  2. Chọn "Tất cả các mục" trong Danh mục
  3. Tìm kiếm "git"
  4. Xóa mọi mục cũ & lạ Hãy thử đẩy lại và nó chỉ LÀM VIỆC

Các bước trên được sao chép từ @spyar để dễ dàng.


6

Tôi thấy giải pháp giống như @spyar cung cấp đó là Truy cập Keychain ứng dụng được lưu tên người dùng cũ.

Có 2 giải pháp cho tình huống này:

  1. Xóa thông tin trong Keychain Access bằng cách
    • Mở truy cập Keychain ứng dụng
    • Tìm kiếm github
    • Xóa thông tin đăng nhập tương ứng

Hoặc là

  1. Nếu bạn sử dụng muốn sử dụng phím ssh . Bạn chỉ cần thay đổi url Repo của mình từ https

https://github.com/username/repo.git

vào

git@github.com: tên người dùng / repo.git

Hi vọng điêu nay co ich.


2

Gần đây tôi đã gặp phải vấn đề này đối với repo cũ trên máy của tôi đã được đẩy lên bằng https. bước 5 và 6 đã giải quyết vấn đề của tôi bằng cách đặt lại url từ xa cho repo của tôi từ việc sử dụng url https sang url ssh

kiểm tra từ xa đang sử dụng url https

> git remote -v
origin  https://github.com/ExampleUser/ExampleRepo.git (fetch)
origin  https://github.com/ExampleUser/ExampleRepo.git (push)

sau đó thiết lập lại nguồn gốc để sử dụng url ssh

> git remote set-url origin git@github.com:ExampleUser/ExampleRepo.git

xác minh từ xa mới

> git remote -v
origin  git@github.com:ExampleUser/ExampleRepo.git (fetch)
origin  git@github.com:ExampleUser/ExampleRepo.git (push)

bây giờ có thể thành công git push -u origin

Tôi vẫn không chắc cài đặt nào đã thay đổi có thể gây ra lỗi đẩy khi điều khiển từ xa là https nhưng đây là giải pháp cho vấn đề của tôi


LRI: Quyền đối với unrealcv / tổng hợp-máy tính-Vision.git bị từ chối đối với monajalal. gây tử vong: Không thể đọc từ kho lưu trữ từ xa. Vui lòng đảm bảo rằng bạn có quyền truy cập chính xác và kho lưu trữ tồn tại.
Mona Jalal

1

Tôi đã có vấn đề tương tự như bạn. Sau một thời gian dài sử dụng Google, tôi phát hiện ra lỗi của mình là do nhiều người dùng đã thêm cùng một khóa trong tài khoản của họ.

Vì vậy, đây là giải pháp của tôi: xóa khóa ssh-key của người dùng sai (tôi có thể làm điều đó vì người dùng sai cũng là tài khoản của tôi). Nếu người dùng sai không phải là tài khoản của bạn, bạn có thể cần thay đổi khóa ssh của mình, nhưng tôi không nghĩ điều này sẽ xảy ra.

Và tôi nghĩ rằng vấn đề của bạn có thể là do lỗi nhập sai trong tên tài khoản của bạn.


0

Vấn đề này cũng được gây ra bởi:

Nếu bạn đang sử dụng mac / linux và đang sử dụng 'ControlMaster' trong ~ / .ssh / config, có thể có một số quy trình chính điều khiển ssh đang chạy.

Để tìm thấy chúng, hãy chạy:

ps aux | grep '\[mux\]'

Và giết những người có liên quan.


0

Tôi cũng gặp phải vấn đề này, điều gây ra điều này cho tôi là trong khi nhân bản repo mà tôi đang thay đổi, tôi đã chọn URL bản sao từ một tab ẩn danh mà không đăng nhập. (Tôi vẫn không biết về cách nó ảnh hưởng). Điều đó vì một số lý do dẫn đến git chọn một tài khoản người dùng khác. Khi tôi thử lại từ một trang đăng nhập thích hợp, nó hoạt động như bình thường đối với tôi.


0

Tôi đã gặp lỗi này khi sử dụng Travis CI để triển khai nội dung , liên quan đến việc đẩy các chỉnh sửa vào kho lưu trữ.

Cuối cùng tôi đã giải quyết vấn đề bằng cách cập nhật mã thông báo truy cập cá nhân GitHub được liên kết với tài khoản Travis với public_repoquyền truy cập phạm vi:

Chọn <code> public_Vpo </ code>

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.