2011-12-22 30 views
111

Tôi đã tải lên ~/.ssh/id_rsa.pub đến Bitbucket's SSH keys làm explained, nhưng Git vẫn hỏi mật khẩu của tôi ở mọi thao tác (chẳng hạn như git pull). Tôi đã bỏ lỡ một cái gì đó?Git on Bitbucket: Luôn yêu cầu mật khẩu, ngay cả sau khi tải khóa SSH công khai

Nó là một kho tư nhân (ngã ba của kho lưu trữ riêng của người khác) và tôi nhân bản nó như thế này:

git clone [email protected]:Nicolas_Raoul/therepo.git 

Đây là địa phương của tôi .git/config:

[core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = false 
     logallrefupdates = true 
[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = https://[email protected]/Nicolas_Raoul/therepo.git 
[branch "master"] 
     remote = origin 
     merge = refs/heads/master 

Trong môi trường cùng với các cùng một khóa công khai, Git trên Github hoạt động tốt.
.sshrwx------, .ssh/id_rsa-rw-------, .ssh/id_rsa.pub-rw-r--r--

Trả lời

177

Bạn có chắc bạn nhân bản nó bằng cách sử dụng url ssh?

Url xuất xứ nói url = https://[email protected]/Nicolas_Raoul/therepo.git vì vậy nếu nó đang sử dụng https, nó sẽ yêu cầu mật khẩu bất kể khóa ssh của bạn.

+40

Bạn nói đúng, cảm ơn! Tôi đã hầu như có thể sao chép sai URL. Tôi đã thay thế URL bằng '.git/config' bằng' [email protected]: Nicolas_Raoul/therepo.git' và bây giờ nó hoạt động! –

+7

và thay đổi điều khiển từ xa bằng cách sử dụng git http://stackoverflow.com/questions/2432764/how-to-change-a-remote-repository-uri-using-git –

+3

Đó là bitbucket đã gợi ý cho tôi url https khi tạo một kho lưu trữ ! Làm thế nào mà! –

9

Trong trường hợp yêu cầu HTTP, nó cũng và cách khác là có thể dán các chứng chỉ (với mật khẩu) trực tiếp vào url:

http://username:[email protected]/... 

này sẽ tiết kiệm được nỗi đau để cung cấp cho thông tin của bạn mỗi lần một lần nữa. Đơn giản sửa đổi .git/config của bạn (url).

+4

Nhưng không an toàn. Và không hoạt động nếu mật khẩu có một số chữ cái như '$%' – Gank

15

Như đã giải thích here, nếu bạn sao chép với SSH url, bạn không cần nhập tên đăng nhập/mật khẩu mỗi lần bạn đẩy/kéo. Kiểm tra trên answer bởi @manojlds

Nhưng nếu bạn muốn nhân bản với HTTPS và muốn tránh vào username/password mỗi lần, bạn có thể lưu trữ thông tin vào bộ nhớ cache với bên dưới lệnh:

git config --global credential.helper 'cache --timeout 3600'

nơi 3600 (giây) nghĩa là 1 giờ, bạn có thể thay đổi tùy theo yêu cầu của bạn.

+1

Điều đó giống như đã cứu tôi rất nhiều thời gian! cảm ơn! –

4
+0

Tôi nghĩ rằng 'Bước 1' là dành cho' Windows' và 'Bước 2' là cho' Linux' nhưng bạn quên nó đề cập đến nó đúng cách. –

+0

Tôi đã chạy 3 bước trên hộp Windows của tôi và nó hoạt động. – webdev5

+2

Trong trường hợp đó, tôi muốn thêm vào hệ điều hành Linux, chúng ta chỉ cần bước 2 và bước 3 cho cùng một hiệu ứng :) –

7

Đã được trả lời ở trên. Tôi sẽ tóm tắt các bước để kiểm tra ở trên.

chạy git remote -v trong thư mục dự án.Nếu đầu ra hiển thị url từ xa bắt đầu bằng https://abc thì bạn có thể cần mật khẩu tên người dùng mỗi lần.

Vì vậy, để thay đổi url từ xa chạy git remote set-url origin {ssh remote url address starts with mostly [email protected]:}.

Bây giờ hãy chạy git remote -v để xác minh url từ xa đã thay đổi.

Tham khảo: https://help.github.com/articles/changing-a-remote-s-url/

1

Sau đây giả truy cập dòng lệnh qua iTerm/Terminal để BitBucket.

Đối với MacOS Sierra 10.12.5, hệ thống của tôi đã biểu thị vấn đề tương đương - yêu cầu cụm mật khẩu SSH của tôi trên mỗi kết nối với bitbucket.

Sự cố phải làm với bản cập nhật OpenSSH trong macOS 10.12.2, được mô tả tại đây trong Technical Note TN2449.

Bạn rất tốt có thể muốn chỉnh giải pháp của bạn, nhưng sau đây sẽ làm việc khi thêm vào tập tin ~/.ssh/config của bạn:

Host * 
    UseKeychain yes 

Để biết thêm thông tin về configs ssh, hãy nhìn vào các trang người đàn ông cho ssh_config:

% man ssh_config 

một điều khác: có một tốt write-up trên superuserhere thảo luận về vấn đề này và giải pháp khác nhau tùy thuộc vào nhu cầu và thiết lập của bạn.

Các vấn đề liên quan