Lỗi git: "Hãy đả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"


97

Tôi đang sử dụng TortoiseGit trên Windows. Khi tôi đang cố gắng Sao chép từ menu ngữ cảnh của Windows Explorer tiêu chuẩn, tôi gặp lỗi sau:

Hãy đả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

Chính xác hơn, ảnh chụp nhanh của thiết bị đầu cuối như sau:

git.exe nhân bản --progress -v "git @ arobotdev: \ git \ AlfaRobot.git" "C: \ Work \ AlfaRobot"

Nhân bản thành 'C: \ Work \ AlfaRobot' ...
Quyền bị từ chối, vui lòng thử lại.
Quyền bị từ chối, vui lòng thử lại.
Quyền bị từ chối (khóa công khai, mật khẩu).
nghiêm trọng: Không thể đọc từ kho lưu trữ từ xa.

Hãy đả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.

git không thoát sạch (mã thoát 128) (21450 ms @ 19.09.2014 10:36:58)

Tôi nên làm gì để git hoạt động bình thường?


1
cố gắng tạo ssh keygen và thêm
Raja Simon

Sử dụng Shell (hoặc Git Bash trong Windows) để tạo SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
Belter

Gặp lỗi đó sau khi thay đổi repos thành địa chỉ git@github.com vì không phải gõ mật khẩu mọi lúc. Lỗi thực sự gây ra đó là quên thêm khóa công khai của tôi trên github.
dasWesen

Câu trả lời:


76

URL git của bạn có thể đã thay đổi. Thay đổi URL trong thư mục cục bộ bằng cách sử dụng lệnh sau

git remote set-url origin git@yourGitUrlHere

17
FYI github hiện sử dụng lược đồ url:git remote set-url origin https://github.com/username/repository.git
RyPope

2
@RyPope bạn có thể sử dụng bất kỳ giao thức nào hoặc git (ssh) hoặc https, đó là mong muốn của bạn. github hiện có cả giao thức githttps.
Vishnu

@Vishnu Cái gì XXXXXXXvậy?
244boy

@RyPope Chuyển nó sang một câu trả lời
ishandutta2007

Sai lầm rất phổ biến đã được thực hiện bởi tôi. Tôi đã sao chép bằng cách sử dụng lệnh clip xclip -sel clip < ~/.ssh/id_rsa.pub, nhưng trong khi dán vào hộp nhập khóa github, tôi đã xóa dòng mới cuối cùng bằng cách sử dụng phím xóa lùi, điều này thực sự đã thay đổi khóa công khai. Vì vậy, hãy luôn sao chép và dán khóa công khai ssh như nó vốn có mà không xóa dòng mới cuối cùng.
Amreesh Tyagi

62

Sự cố đó có thể gặp phải với ssh-agent của bạn, khóa ssh của bạn chưa được thêm ssh-agent. Bạn phải áp dụng các bước sau bằng cách sử dụng thiết bị đầu cuối của mình: -

  1. $ eval "$ (ssh-agent -s)"

    Đại lý pid 5867

  2. $ ssh-add

    Nhập cụm mật khẩu cho /home/you/.ssh/id_rsa: [] Đã thêm danh tính: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

sau đó nó sẽ hoạt động..cheers J.


11
Vẫn nhận được một lỗi khi nhân bản:fatal: Could not read from remote repository.
IgorGanapolsky

Cảm ơn nó đã làm việc cho tôi Tôi đã tạo khóa khác với id_rsa mặc định, vì vậy chỉ cần thực hiện bổ sung trong lệnh trên ssh-add -K ~ / .ssh / id_rsa_other_project.
Nitesh

Vâng, điều này sẽ không khắc phục được bất kỳ vấn đề nào. Thêm danh tính của bạn để ssh chỉ dừng điều yêu cầu mật khẩu cert của bạn mỗi khi
DMcCallum83

hoan hô. Tôi đã không chạy được brew update. khi tôi chạy ssh-addtrước khi chạy lệnh, nó đã hoạt động. hy vọng tôi không cần phải lặp lại điều này mọi lúc.
nyxee

vẫn gặp lỗi "Xác minh khóa máy chủ không thành công. nghiêm trọng: Không thể đọc từ kho lưu trữ từ xa." nhưng việc thêm máy chủ đã biết đã được khắc phục cho tôi: stackoverflow.com/questions/15214977/…
rickvian

36

Cố gắng sử dụng HTTPS thay vì SSH trong khi lấy bản sao từ GIT, sử dụng Url này để lấy bản sao, bạn có thể sử dụng Gitbase, Android Studio hoặc bất kỳ công cụ nào khác để nhân bản nhánh. nhập mô tả hình ảnh ở đây


34

Đối với tôi đó là do không có khóa SSH trên máy. Kiểm tra cục bộ khóa SSH:

$ cat ~/.ssh/id_rsa.pub

Đây là khóa SSH của bạn. Thêm nó vào khóa SSH của bạn trong kho lưu trữ.
Trong gitlab, đi tới

cài đặt cấu hình -> Khóa SSH

và thêm chìa khóa


7
Tôi đã thêm khóa như bạn đã đề cập và vẫn nhận được thông báo bị từ chối truy cập. Vui lòng giúp đỡ
Jet

18

Github hiện sử dụng lược đồ url

git remote set-url origin https://github.com/username/repository.git


9

Bạn đang cố gắng sao chép kho lưu trữ qua ssh: git@arobotdev...và khóa SSH của bạn không được đặt đúng cách trên máy chủ. Có nhiều lý do cho điều này:

  1. Khóa công khai của bạn có thể không được lưu trong tệp ủy quyền_key của người dùng git
  2. Nếu 1 không đúng, Khóa riêng tư của bạn không được lưu trong thư mục .ssh / của HOMEDIR của bạn.
  3. Quyền không được đặt đúng cách

Nếu cả 3 điều trên đều không đúng sự thật thì kết luận duy nhất của tôi có thể là thử: git@arobotdev:AlfaRobot.git Giả sử AlfaRobot.git nằm trong HOMEDIR của người dùng git và không nằm trong một thư mục có tên là git nằm trong HOMEDIR của người dùng git.


5

Rsa.pub (tức là khóa công khai được tạo), cần được thêm vào trang github >> settings >> ssh. Kiểm tra xem, bạn đã không thêm khóa công khai này trong kho lưu trữ cài đặt >> khóa triển khai. Nếu vậy, hãy xóa mục nhập khỏi đây và thêm vào vị trí đầu tiên được đề cập.

Thiết lập chi tiết khóa pub-private .

Do đó, nó sẽ hoạt động!


3
  1. Điều đầu tiên bạn có thể muốn xác nhận là kết nối internet. Mặc dù vậy, hầu hết các vấn đề về internet sẽ nói rằng không thể truy cập repo.

  2. Đảm bảo bạn đã thiết lập ssh cả cục bộ và trên github của mình. Xem cách

  3. Đảm bảo rằng bạn đang sử dụng điều khiển từ xa ssh git. Nếu bạn đã sao chép https, chỉ cần đặt url thành url ssh, với lệnh git nàygit remote set-url origin git@github.com:your-username/your-repo-name.git

  4. Nếu bạn đã thiết lập ssh đúng cách nhưng nó vẫn ngừng hoạt động, hãy làm như sau:

    • eval "$(ssh-agent -s)"
    • ssh-add

    Nếu bạn vẫn gặp sự cố, hãy kiểm tra để đảm bảo rằng bạn chưa xóa ssh khỏi github của mình. Trong trường hợp ssh đã bị xóa khỏi github, bạn có thể thêm lại. Sử dụng pbcopy < ~/.ssh/id_rsa.pubđể sao chép khóa ssh và sau đó chuyển đến cài đặt ssh github của bạn và thêm nó.

Tôi sẽ khuyên bạn luôn sử dụng ssh. Đối với hầu hết các nhóm mà tôi đã làm việc cùng, bạn không thể truy cập repo (hầu hết là riêng tư) ngoại trừ bạn sử dụng ssh. Đối với người mới bắt đầu, nó có vẻ khó hơn nhưng về sau bạn sẽ thấy nó khá dễ dàng và an toàn hơn.


3

Tôi gặp sự cố này và tôi phát hiện ra rằng hệ thống của tôi có địa chỉ dns sai. Xác minh mạng của bạn và kiểm tra với

ssh -vvv git@bitbucket.org

Và đọc các thông báo đầu ra. Nếu bạn thấy "Bạn có thể sử dụng git hoặc hg để kết nối với Bitbucket." , mọi thứ ổn cả.


xin chào @Albert, tôi đang gặp phải vấn đề tương tự nhưng đối với gitlab.com. Bạn đã làm cách nào để khắc phục sự cố?
abiratsis

@AlexandrosBiratsis Tôi thay thế dns của mình bằng địa chỉ khác. Hãy thử opendns hoặc google dns.
albert

2

Một vấn đề khác có thể là kết nối internet của bạn. Có thể rõ ràng, nhưng tôi mất vài phút để tìm ra wifi của tôi đã bị sập :)


1
Theo thông báo lỗi, có vẻ như kết nối Internet không phải là vấn đề ở đây.
jbmusso

2

Đây là cách tôi giải quyết vấn đề này. Tôi đang sử dụng Babun (mintty.exe) trên Win7 / 10. Khi tôi đã thử nhiều giải pháp được đề cập ở trên, và không có giải pháp nào hoạt động. Tôi nhận ra có lẽ mình đã sử dụng sai tác nhân ssh ... Vì vậy, tôi chạy echo $GIT_SSHđể tìm hiểu, nó hiển thị đường dẫn đếnPlink.exe . Những gì tôi thực sự mong đợi là OpenSSH.

Vì vậy, tôi thêm một lớp lót sau vào ~/.zshrctệp

Lưu ý 1: Bạn có thể thực thi nó trong babun trực tiếp.
Lưu ý 2: Bạn nếu bạn sử dụng bash thì tệp cấu hình là.bashrc

export GIT_SSH=$(which ssh)

Và nó hoạt động!



2

Hãy thử https thay vì ssh. Chọn tùy chọn https từ trang chủ của dự án nơi bạn sao chép url sao chép từ đó.


2

Nếu nó đang hoạt động trước đó và đột nhiên ngừng hoạt động:

Sự cố này có thể được gây ra vì đôi khi ssh-agentkhông liên tục khi khởi động lại. Bạn nên kiểm tra xem ssh-agentđã thêm khóa của mình chưa:

ssh-add -l -E md5

nếu bạn nhận được đầu ra như:

The agent has no identities.

nó có nghĩa là ssh-agentđã mất chìa khóa của bạn. Trong trường hợp đó, bạn chỉ cần thêm lại khóa nhận dạng. Cái gì đó như:

ssh-add ~/.ssh/git_rsa

Lỗi sẽ biến mất ngay bây giờ!


Điều này đã xảy ra với tôi khi tôi tạo một ssh khác cho một tài khoản khác, vì vậy tôi chỉ thêm phần còn thiếu git_rsavào danh sách
John

1

Điều này cũng có thể xảy ra nếu bạn đang kết nối với kho lưu trữ git của mình thông qua VPN. Đảm bảo rằng bạn được kết nối với VPN được sử dụng để truy cập các tài nguyên của tổ chức bạn.


1

Tôi gặp lỗi này khi tải dự án lên gitlab. Tôi không sao chép từ git mà thay vào đó tải lên dự án. Để đẩy mã của bạn sang gitlab, bạn có hai cách hoặc sử dụng ssh hoặc https. Nếu bạn sử dụng https, bạn phải nhập tên người dùng và mật khẩu của tài khoản gitlab. Để đẩy mã của bạn sang git, bạn có thể sử dụng mã sau.

Đẩy tới Git lần đầu tiên

>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

Tham số -C là tùy chọn, nó cung cấp nhận xét ở cuối khóa của bạn để phân biệt với những người khác nếu bạn có nhiều. Thao tác này sẽ tạo id_rsa (khóa riêng tư của bạn) và id_rsa.pub (khóa công khai của bạn). Chúng tôi chuyển khóa công khai của mình xung quanh và giữ khóa riêng tư của chúng tôi - tốt, riêng tư. Cài đặt người dùng Gitlab là nơi bạn sau đó sẽ thêm bạn khóa công khai vào tài khoản của bạn , cho phép chúng tôi cuối cùng đã đẩy.

Trong vị trí dự án của bạn (Thư mục), sử dụng lệnh dưới đây

git init

Nó Biến đổi thư mục hiện tại thành một kho lưu trữ Git. Điều này thêm một thư mục con .git vào thư mục hiện tại và giúp bạn có thể bắt đầu ghi lại các bản sửa đổi của dự án.

Đẩy bằng đường dẫn https

git push --set-upstream https://gitlab.com/Account_User_Name/Your_Project_Name.git master

Đẩy bằng đường dẫn ssh

git push --set-upstream git@gitlab.com:Account_User_Name/Your_project_Name.git master

- set-up: cho git biết đường dẫn đến điểm gốc. Nếu trước đó Git đã đẩy vào chi nhánh hiện tại của bạn, nó sẽ nhớ nguồn gốc ở đâu

master : đây là tên của nhánh mà tôi muốn đẩy đến khi khởi tạo


0

Giống như các câu trả lời khác, sử dụng httpsthay vì sshlà giải pháp.

Tôi đăng một câu trả lời để đưa ra một ví dụ cụ thể về một giải pháp khả thi. Tôi đã giải quyết vấn đề này với bitbucket khi tôi thay đổi url từ xa thành HTTPS bằng dòng lệnh này:

git remote set-url origin <bitbucket_URL>

Sau đó, tôi có thể đẩy nội dung vào kho lưu trữ bằng lệnh này:

git push -u origin --all

Và sau đó tôi cũng có thể sử dụng Sourcetree


0

Thật kỳ lạ, tôi chỉ nhận được lỗi này trong một trong nhiều repo của tôi.

Vấn đề của tôi là sau khi cài đặt GitHub Desktop mới cho Windows trong đó GitHub cho Win cũ trước đó đã lưu giữ các khóa ~/.ssh/github_rsa~/.ssh/github_rsa.pubnơi GitHub cho Win mới mong đợi điều đó, ~/.ssh/id_rsavì vậy giải pháp chỉ là đổi tên các khóa riêng tư và khóa công khai hiện có:

~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub

Sau đó cho phép tôi truy cập lại repo mà không có vấn đề gì.


0

sử dụng nguồn gốc https của bạn thay vì url ssh

thí dụ:

git remote add origin  https://gitlab.com/user/folder.git

0

Tôi đang sử dụng Ubuntu

sau khi đọc nhiều câu trả lời, không ai trong số họ có thể giải quyết vấn đề, ngay cả khi tôi đã thêm khóa SSH vào tài khoản git của mình và thử kiểm tra bằng cách sử dụng ssh -T git@gitlab.comvà nó cho biết Welcome <my username>, nhưng nó vẫn cho biết tôi không có quyền truy cập. Sau đó, tôi tìm thấy lý do là:

Thông thường nếu bạn không phải là rootngười dùng, nó sẽ yêu cầu bạn chạy với sudomọi lệnh git.

khi chạy sudo git clone <SSH....>(ví dụ). nó sẽ được thực thi dưới sự rootcho phép, nhưng vô tình khi tạo khóa SSH, tôi chạy nó như người dùng bình thường và tôi lưu khóa vào ~/.ssh/id_rsa, nó giải quyết đường dẫn tuyệt đối /home/username/.ssh/id_rsa. Và khi thực hiện sudo git clone ..., hãy tìm kiếm khóa SSH trong/root/.ssh/id_rsa

Tại sao tôi có thể chắc chắn về điều này. Để xem git tìm kiếm khóa SSH của bạn ở đâu. Chạy lệnh này: sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>. Nó sẽ chỉ cho bạn nơi nó tìm kiếm khóa SSH của bạn.

Vì vậy, GIẢI PHÁP tôi đề xuất là:

Tạo lại khóa SSH của bạn (làm theo hướng dẫn này ), NHƯNG hãy chạy sudo suở bước đầu tiên, sau đó bạn sẽ ổn.


0

Thêm khóa ssh đã làm việc cho tôi. Bạn có thể tạo khóa ssh bằng lệnh ssh-keygen trên mac. Bạn sẽ có thể thấy menu Triển khai khóa trên YourRepository> Cài đặt, đừng quên chọn tùy chọn Cho phép truy cập ghi.

triển khai ảnh chụp màn hình menu phím


0

Sai lầm rất phổ biến đã được thực hiện bởi tôi. Tôi đã sao chép bằng cách sử dụng lệnh clip xclip -sel clip < ~/.ssh/id_rsa.pub, nhưng trong khi dán vào hộp nhập khóa github, tôi đã xóa dòng mới cuối cùng bằng cách sử dụng phím xóa lùi, điều này thực sự đã thay đổi khóa công khai.

Vì vậy, hãy luôn sao chép và dán khóa công khai ssh như nó vốn có mà không xóa dòng mới cuối cùng.


0

Đối với tôi, tôi đang gặp sự cố với VPN của công ty, sau khi ngắt kết nối hoạt động tốt.

Kiểm tra kết nối với github bằng lệnh ssh -vvvT git@github.com


0

Việc chuyển sang sử dụng https hoạt động. Đầu tiên, hãy chuyển sang https thay vì phím ssh. git từ xa set-url origin

Sau đó, nó sẽ yêu cầu tên người dùng và mật khẩu git.

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.