Git đẩy yêu cầu tên người dùng và mật khẩu


1436

Tôi đã sao chép kho lưu trữ Git từ tài khoản GitHub của mình sang PC.

Tôi muốn làm việc với cả PC và máy tính xách tay của mình, nhưng với một tài khoản GitHub.

Khi tôi cố gắng đẩy hoặc kéo từ GitHub bằng PC của mình, nó yêu cầu tên người dùng và mật khẩu, nhưng không phải khi tôi đang sử dụng máy tính xách tay!

Tôi không muốn nhập tên người dùng và mật khẩu mỗi lần tôi tương tác  origin. Tôi đang thiếu gì ở đây?


1
Có nhưng tôi nên làm gì? Tôi tạo keygen còn gì nữa?
TooCooL

1
Bạn cần đăng ký pubkey với tài khoản Github của bạn ( github.com/account/ssh ) và định cấu hình ứng dụng khách SSH của bạn để sử dụng đúng tên người dùng.
jwodder

1
Tôi đã làm tất cả điều đó nhưng nó vẫn yêu cầu tên người dùng và mật khẩu! Có thể sử dụng một tài khoản với hai PC không?
TooCooL

1
Câu hỏi này bao gồm tất cả các tùy chọn của bạn cho vấn đề này khá tốt: stackoverflow.com/questions/5343068/NH
ford

2
Không cần phải chuyển sang ssh nữa. Điều đó cũng có thể với HTTPS. Kiểm tra câu trả lời của tôi.
Varun Achar

Câu trả lời:


1960

Một nguyên nhân phổ biến là nhân bản bằng cách sử dụng mặc định (HTTPS) thay vì SSH. Bạn có thể sửa lỗi này bằng cách truy cập kho lưu trữ của mình, nhấp vào "Sao chép hoặc tải xuống", sau đó nhấp vào nút "Sử dụng SSH" phía trên trường URL và cập nhật URL của điều khiển từ xa gốc như sau:

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

Điều này được ghi lại tại GitHub: Chuyển URL từ xa từ HTTPS sang SSH .


61
Và để tìm ra cách thay đổi URL, hãy truy cập vào đây: stackoverflow.com/a/2432799/60488 (spoiler git remote set-url origin git://new.url.here:)
Johan Kool

136
Nếu bạn không thể sử dụng ssh cho các hạn chế bảo mật (như tôi), bạn có thể làm: git remote set-url origin https://name:password@github.com/repo.git (trích từ một nhận xét tại đây)
Bruno Berisso

134
Tại sao nhân bản với HTTPS là một lỗi phổ biến? GitHub hiện khuyên bạn nên sử dụng HTTPS.
Dennis

8
@smftre theo mặc định là trường hợp đó, nhưng bạn có thể sử dụng một trình trợ giúp để lưu thông tin đăng nhập của bạn .
Dennis

28
Đã sửa lỗi của tôi Permission denied (publickey)bằng hướng dẫn này: help.github.com/articles/generating-ssh-keys .
voltrevo

386

Xác thực vĩnh viễn với kho Git

Chạy lệnh sau để kích hoạt bộ đệm ẩn thông tin xác thực :

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Bạn cũng nên chỉ định bộ nhớ đệm hết hạn ,

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

Sau khi kích hoạt bộ đệm thông tin xác thực, nó sẽ được lưu trong 7200 giây (2 giờ) .


bạn cũng có thể phải thay đổi url từ xa của mình với git remote set-url origin https://git@github.com/<owner>/<repo>.git Điều này cũng hoạt động với 2FA
Bron Davies

14
Đây phải là câu trả lời được chấp nhận. Nó trả lời chính xác câu hỏi.
Abraham TS

nó sẽ tự động bị xóa khỏi các tập tin Ubuntu đến sau 7200 vì mục đích bảo mật?
usama

hoặc 43.200 trong 12 giờ. Bạn đăng nhập một lần mỗi ngày. Điều đó có thể hợp lý hơn đối với một số người.
Urasquirrel

Chỉ cần thử điều này - đã nhận:fatal: protocol 'https' is not supported
Joel

134

Tôi vừa gặp một vấn đề tương tự, và giải pháp đơn giản nhất tôi tìm thấy là sử dụng URL SSH thay vì HTTPS:

ssh://git@github.com/username/repo.git

Và không phải cái này:

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

Bây giờ bạn có thể xác thực chỉ bằng khóa SSH thay vì usernamepassword.


1
Cách dễ nhất để khắc phục sự cố, chỉ cần chỉnh sửa URL gốc từ xa. Đó là tất cả. Làm xong. Thanx!
JOM

1
Điều này làm việc cho tôi nhưng trước tiên tôi cần phải giải quyết điều này: stackoverflow.com/questions/2643502/
Khăn

để thiết lập khóa SSH, bạn có thể tham khảo help.github.com/articles/connecting-to-github-with-ssh
ksridhar

120

Ngoài việc thay đổi thành SSH, bạn cũng có thể tiếp tục sử dụng HTTPS, nếu bạn không muốn đặt mật khẩu của mình ở dạng văn bản rõ ràng. Đặt cái này trong của bạn ~/.netrcvà nó sẽ không hỏi tên người dùng / mật khẩu của bạn (ít nhất là trên Linux và Mac):

machine github.com
       login <user>
       password <password>

Bổ sung (xem bình luận thứ hai của VonC): trên Windows tên tệp là %HOME%\_netrc.

Đồng thời đọc bình luận đầu tiên của VonC trong trường hợp bạn muốn mã hóa.

Một bổ sung khác (xem bình luận của user137717) mà bạn có thể sử dụng nếu bạn có Git 1.7.10 hoặc mới hơn .

Lưu mật khẩu GitHub của bạn trong Git bằng trình trợ giúp thông tin xác thực :

Nếu bạn đang nhân bản kho lưu trữ GitHub bằng HTTPS, bạn có thể sử dụng trình trợ giúp thông tin xác thực để bảo Git nhớ tên người dùng và mật khẩu GitHub của bạn mỗi khi nói chuyện với GitHub.

Điều này cũng hoạt động trên Linux, Mac và Windows.


3
Vâng, nó hoạt động trên Linux, nhưng không hoạt động với gitbash trên Windows.
Doanh số Dielson

3
@dolmen Tôi hiểu ý của bạn, nhưng nếu bạn nhớ đặt mật khẩu của mình vào một văn bản rõ ràng, bạn có thể ... mã hóa nó;) Xem stackoverflow.com/a/18362082/6309 . và điều đó thậm chí tương thích với xác thực 2 yếu tố (2FA) của Github: stackoverflow.com/a/18607931/6309
VonC

3
@Sales nó hoạt động hoàn hảo từ phiên DOS hoặc git bash trên Windows, miễn là bạn gọi tệp của mình %HOME%\_netrc(thay vì ~/.netrc). Xem thêm stackoverflow.com/a/18362082/6309 để mã hóa tệp đó.
VonC

1
Điều này hoạt động rất tốt trong Linux, đặc biệt là sử dụng git qua VPN.
Evan Hu

3
bạn không cần phải đặt nó trong văn bản rõ ràng hoặc mã hóa nó. tiện ích trợ giúp sẽ lưu trữ bộ nhớ cache cho bạn và mất 30 giây để thiết lập. help.github.com/articles/caching-your-github-password-in-git/ mẹo
user137717

86

Đối với những người không quen biết bị bối rối bởi các câu trả lời trước đó, bạn có thể làm:

git remote -v

Mà sẽ trả lời với một cái gì đó như

origin    https://yourname@github.com/yourname/yourrepo.git (fetch)
origin    https://yourname@github.com/yourname/yourrepo.git (push)

Sau đó, bạn có thể chạy lệnh mà nhiều người khác đã đề xuất, nhưng bây giờ bạn biết tên của bạn và yourrepo từ phía trên, vì vậy bạn chỉ cần cắt và dán yourname/yourrepo.gittừ bên trên vào:

git remote set-url origin git@github.com:yourname/yourrepo.git

1
Tôi đã thử điều này. Nó hỏi tôi paraphrasemọi lúc. Tôi đã không thiết lập một
samayo

Điều gì diễn ra ở vị trí của yourrepo?
Raphi

2
@Raphi chạy git remote -vvà xem những gì diễn ra
Davide

1
Các câu trả lời khác nên trả lời lời khuyên này.
Bennett Brown

57

Nếu bạn đang sử dụng SSH và khóa riêng của bạn được mã hóa với một mật khẩu, sau đó bạn vẫn sẽ được nhắc nhở để nhập cụm từ mật khẩu / mật khẩu cho khóa bí mật khi bạn làm các hoạt động mạng với Git như push, pull, và fetch.

Sử dụng ssh-agent để lưu thông tin mật khẩu / mật khẩu khóa riêng

Nếu bạn muốn tránh phải nhập cụm mật khẩu của mình mỗi lần, bạn có thể sử dụng ssh-agentđể lưu trữ thông tin mật khẩu khóa riêng của mình một lần cho mỗi phiên cuối, như tôi giải thích trong câu trả lời của mình về Không thể mở kết nối với tác nhân xác thực của bạn :

$ eval `ssh-agent -s`
$ ssh-add

Trong Windows msysgit Bash, bạn cần đánh giá đầu ra của ssh-agent, nhưng tôi không chắc liệu bạn có cần phải làm như vậy trong các môi trường phát triển và hệ điều hành khác hay không.

ssh-addtìm kiếm một khóa riêng trong .sshthư mục nhà của bạn được gọi id_rsa, đó là tên mặc định, nhưng bạn có thể chuyển một filepath cho một khóa có tên khác.

Giết chết đại lý

Khi bạn hoàn thành với phiên cuối, bạn có thể tắt máy ssh-agentvới cờ kill -k:

$ ssh-agent -k

Như được giải thích trong ssh-agenthướng dẫn :

-k

Giết tác nhân hiện tại (được đưa ra bởi biến môi trường SSH_AGENT_PID).

Thời gian chờ tùy chọn

Ngoài ra, nó có thể mất một tham số thời gian chờ tùy chọn như vậy:

$ ssh-add -t <timeout>

nơi <timeout>có định dạng <n>hcho <n>giờ, <n>mtrong <n>vài phút, v.v.

Theo ssh-agenthướng dẫn :

-t life

Đặt giá trị mặc định cho thời gian nhận dạng tối đa được thêm vào tác nhân. Thời gian tồn tại có thể được chỉ định bằng giây hoặc theo định dạng thời gian được chỉ định trong sshd_config (5) . Thời gian tồn tại được chỉ định cho một danh tính với ssh-add (1) ghi đè giá trị này. Không có tùy chọn này, tuổi thọ tối đa mặc định là mãi mãi.

Xem trang này để biết thêm các định dạng thời gian .

Cảnh báo bảo mật cho người dùng Cygwin

Người dùng Cygwin nên biết về rủi ro bảo mật tiềm ẩn khi sử dụng ssh-agent trong Cygwin :

mọi người nên nhận thức được sự nguy hiểm tiềm tàng của tác nhân ssh theo Cygwin 1 , mặc dù theo một mạng lưới địa phương và portscan từ xa, có vẻ như không thể truy cập được cổng được chỉ định trong / tmp / ssh-foo ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Và tại đường dẫn được trích dẫn :

Tuy nhiên, lưu ý rằng Unix socket miền Cygwin của là về cơ bản không an toàn và vì vậy tôi mạnh mẽ khuyến khích sử dụng ssh-agent dưới Cygwin.

Khi bạn chạy ssh-agent dưới Cygwin, nó sẽ tạo ổ cắm AF_UNIX trong /tmp/ssh-$USERNAME/thư mục. Bên dưới ổ cắm Cygwin AF_UNIX được mô phỏng qua ổ cắm AF_INET. Bạn có thể dễ dàng thấy rằng nếu bạn sẽ xem xét /tmp/ssh-$USERNAME/agent-socket-*tệp qua Notepad. Bạn sẽ thấy một cái gì đó như

!<socket >2080

rồi chạy netstat -avà bất ngờ! Bạn có một số chương trình nghe cổng 2080. Đó là ssh-agent. Khi ssh nhận được thử thách RSA từ máy chủ, nó đề cập đến tương ứng /tmp/ssh-$USERNAME/agent-socket-*(theo Cygwin, trong trường hợp của chúng tôi, điều đó có nghĩa là nó sẽ mở kết nối tới localhost:2080) và yêu cầu ssh-agent xử lý thử thách RSA bằng khóa riêng mà nó có, sau đó nó chỉ đơn giản chuyển phản hồi nhận được từ tác nhân ssh đến máy chủ.

Trong Unix, một kịch bản như vậy hoạt động mà không gặp vấn đề gì, bởi vì nhân Unix kiểm tra các quyền khi chương trình cố gắng truy cập vào ổ cắm AF_UNIX. Tuy nhiên, đối với các ổ cắm AF_INET, các kết nối là ẩn danh (đọc "không an toàn"). Hãy tưởng tượng, bạn có Cyshwin ssh-agent đang chạy. Một tin tặc độc hại có thể di chuyển hộp của bạn, xác định vị trí cổng mở được sử dụng bởi ssh-agent, mở kết nối đến máy chủ SSH của bạn, nhận thử thách RSA từ nó, gửi nó đến đại lý ssh của bạn thông qua một cổng mở mà anh ấy / cô ấy tìm thấy, nhận Phản hồi RSA, gửi nó đến máy chủ SSH và voila, anh ấy / cô ấy đã đăng nhập thành công vào máy chủ của bạn như bạn.


Âm thanh hay và chi tiết. Tôi đã chăm sóc người trợ giúp thông tin https và bạn đã chăm sóc các kết nối ssh! +1
VonC

49

Nguồn: Thiết lập Git

Lệnh sau sẽ lưu mật khẩu của bạn trong bộ nhớ một thời gian (đối với Git 1.7.10 hoặc mới hơn).

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)

2
Tôi thích trợ giúp thông tin 'netrc' ( stackoverflow.com/a/18362082/6309 ) để lưu trữ nhiều thông tin đăng nhập (mà không phải nhớ mọi mật khẩu). Nhưng nếu bạn đang ở trên Windows và muốn sử dụng bộ nhớ cache, bạn cần winstore ( stackoverflow.com/a/15310274/6309 )
VonC

9
Đây là câu trả lời tốt nhất cho đến nay IMHO.
Chiel ten Brinke

35

Khi bạn sử dụng https để kéo và đẩy Git, chỉ cần định cấu hình remote.origin.urlcho dự án của bạn, để tránh tên người dùng đầu vào (hoặc / và mật khẩu) mỗi khi bạn đẩy.

Cách cấu hình remote.origin.url:

Định dạng URL:
    https: // {tên người dùng: mật khẩu @} github.com/ {chủ sở hữu} / {repo}

Các thông số trong URL:

* Tên người dùng 
Tùy chọn, tên người dùng để sử dụng khi cần.
xác thực, nếu được chỉ định, không cần nhập lại tên người dùng khi cần xác thực. Đừng sử dụng email; sử dụng tên người dùng không có "@", nếu không URL không thể được phân tích cú pháp chính xác, * mật khẩu tùy chọn, mật khẩu để sử dụng khi cần xác thực. Nếu được chỉ định, không cần nhập lại mật khẩu khi cần xác thực. Tiền boa: giá trị này được lưu trữ dưới dạng văn bản thuần túy, vì vậy, đối với các vấn đề bảo mật, không chỉ định tham số này, * ví dụ git config từ xa.origin.url https: //eric@github.com/eric/myproject

@Update - sử dụng ssh

Tôi nghĩ rằng sử dụng sshgiao thức là một giải pháp tốt hơn https, mặc dù bước thiết lập phức tạp hơn một chút.

Các bước thô sơ:

  • Tạo các khóa ssh bằng lệnh, ví dụ ssh-keygentrên Linux, trên các cửa sổ msysgitcung cấp các lệnh tương tự.
  • Giữ khóa riêng trên máy cục bộ ở một vị trí thích hợp, ví dụ : ~/.ssh. Và thêm nó vào tác nhân ssh thông qua ssh-addlệnh.
  • Tải khóa công khai lên máy chủ Git.
  • Thay đổi remote.origin.urlkho Git thành sshkiểu, ví dụ:git@gitlab.com:myaccount/myrepo.git
  • Sau đó, khi kéo hoặc đẩy, không cần nhập tên người dùng hoặc mật khẩu bao giờ.

Lời khuyên:

  • Nếu khóa ssh của bạn có cụm mật khẩu, thì bạn cần nhập nó vào lần đầu tiên sử dụng khóa sau mỗi lần khởi động lại máy, theo mặc định.

@Update - Chuyển đổi giữa httpssshgiao thức.

Chỉ cần thay đổi remote.origin.urllà đủ hoặc bạn có thể chỉnh sửa repo_home/.git/configtrực tiếp để thay đổi giá trị (ví dụ: sử dụng vitrên Linux).

Thông thường tôi thêm một dòng cho mỗi giao thức, và nhận xét một trong số chúng bằng cách sử dụng #.

Ví dụ

[từ xa "nguồn gốc"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        tìm nạp = + refs / Heads / *: refs / điều khiển từ xa / origin / *

Bạn có chắc chắn mở rộng tên người dùng hỗ trợ URL dựa trên http [s] không? Hướng dẫn git-fetch(1)đề cập rằng chỉ dành cho git/ sshURL dựa trên.
ngày

@plmday vâng, tôi đang sử dụng nó, phiên bản git của tôi là 1.8.2.3 và 1.8.4, tôi không chắc liệu verion cao hơn có thay đổi về điều này không.
Eric Wang

1
NB cung cấp mật khẩu của bạn trong URL (ngay cả khi sử dụng HTTPS) có nghĩa là nó hiển thị với mọi thứ giữa bạn và kho lưu trữ của bạn.
William

3
Không, cung cấp mật khẩu trong https://username:password@github.com/là an toàn. Xem stackoverflow.com/questions/4980912/
Mạnh

1
Và đây là những gì tôi đang tìm kiếm (để tự động hóa hoàn toàn)
Joshua

16

Bạn có thể lưu mật khẩu GitHub trong Git:

Chỉ cần làm theo các hướng dẫn từ tài liệu chính thức của GitHub .

Sau khi làm theo các hướng dẫn từ liên kết trên, bạn sẽ có thể đẩy / kéo đến / từ kho lưu trữ của mình mà không cần nhập tên người dùng / mật khẩu mỗi lần.


5
đây là câu trả lời tốt nhất ở đây và nên là một IMO được chấp nhận
TheZuck

1
Đồng ý, một câu trả lời trích dẫn các tài liệu chính thức nên được ưu tiên. Tôi vui vẻ làm theo hướng dẫn của họ và thích sử dụng các quy ước tiêu chuẩn.
johnnieb

10

Đây là một lựa chọn khác:

Thay vì viết

git push origin HEAD

Bạn có thể viết:

git push https://user:pass@yourrepo.com/path HEAD

Rõ ràng, với hầu hết các shell, điều này sẽ dẫn đến việc mật khẩu được lưu trong bộ nhớ cache trong lịch sử, vì vậy hãy ghi nhớ điều đó.


1
Trong Bash, việc thêm một hoặc nhiều không gian hàng đầu thường sẽ khiến nó không được sử dụng. Nhưng không phải trong Git Bash , mặc dù.
Peter Mortensen

Điều này chỉ đơn giản là làm việc cho tôi :)
Naveen Kumar V

9

Điều làm việc cho tôi là chỉnh sửa .git/configvà sử dụng

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

Không cần phải nói rằng đây là một cách lưu trữ mật khẩu không an toàn nhưng có những môi trường / trường hợp mà điều này có thể không phải là vấn đề.


6

Nếu khóa hoặc .netrctệp SSH không hoạt động với bạn, thì một giải pháp đơn giản nhưng kém an toàn khác có thể phù hợp với bạn là git-cert-store - Trình trợ giúp lưu trữ thông tin đăng nhập trên đĩa:

git config --global credential.helper store

Theo mặc định, thông tin đăng nhập sẽ được lưu trong tập tin ~/.git-credentials. Nó sẽ được tạo ra và viết cho.

Xin lưu ý sử dụng trình trợ giúp này sẽ lưu trữ mật khẩu của bạn không được mã hóa trên đĩa, chỉ được bảo vệ bởi các quyền của hệ thống tệp. Nếu điều này có thể không phải là một sự đánh đổi an ninh chấp nhận được.


5

Tôi gặp vấn đề tương tự.

Vì vậy, tôi đã thay đổi .git/configtập tin từ dự án của tôi,

url = https://github.com/<your-user-here>/<your-repo-here>

đến

url = git@github.com:<your-user-here>/<your-repo-here>

và thêm khóa công khai SSH vào cấu hình Git đang được cài đặt.

Đối với khóa công khai SSH:

cat ~/.ssh/id_rsa.pub

1
với cat ~/.ssh/id_rsa.publấy khóa rsa và dán vào cài đặt cổng web git.
Anupam Maurya

4

Cập nhật cho HTTPS:

GitHub đã ra mắt một chương trình mới cho Windows lưu trữ thông tin đăng nhập của bạn khi bạn sử dụng HTTPS:

Để sử dụng:

  • Tải chương trình từ đây

  • Khi bạn chạy chương trình, nó sẽ chỉnh sửa .gitconfigtệp của bạn . Kiểm tra lại nếu nó chỉnh sửa chính xác .gitconfigtrong trường hợp bạn có một vài trong số chúng. Nếu nó không chỉnh sửa đúng, hãy thêm phần sau vào.gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    LƯU Ý ngắt dòng sau [credential]. Nó là bắt buộc.

  • Mở máy khách dòng lệnh của bạn và thử git push origin mastermột lần. Nếu nó hỏi bạn mật khẩu, hãy nhập nó và bạn sẽ thông qua. Mật khẩu đã được lưu!


Cảm ơn Varun, đã làm việc say mê!
Joyy

4

Đối với người dùng Windows Git, sau khi chạy git config --global credential.helper store, nếu nó vẫn nhắc mật khẩu, bạn nên kiểm tra xem tệp cấu hình được ghi vào đâu, sử dụng lệnh này

git config --list --show-origin

Trong trường hợp của tôi, sau khi chỉnh sửa thủ công tệp cấu hình 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig' và thêm văn bản sau, nó đã hoạt động.

[credential]
    helper = store

3

Về cơ bản bạn có hai lựa chọn.

Nếu bạn sử dụng cùng một người dùng trên cả hai máy, bạn cần sao chép khóa .pub vào PC, vì vậy GitHub biết rằng bạn là cùng một người dùng.

Nếu bạn đã tạo tệp .pub mới cho PC của mình và muốn coi các máy là những người dùng khác nhau, bạn cần đăng ký tệp .pub mới trên trang web GitHub.

Nếu điều này vẫn không hoạt động thì có thể là do ssh không được cấu hình đúng và ssh không tìm thấy vị trí các phím của bạn. Thử

ssh -vv username@github.com

Để có thêm thông tin tại sao SSH thất bại.


3

Cập nhật trực tiếp tệp cấu hình Git của bạn ( nếu bạn không muốn ghi nhớ các lệnh ưa thích ):

Mở .git/configtập tin của bạn trong trình soạn thảo văn bản yêu thích của bạn. Nó sẽ nằm trong thư mục mà bạn đã nhân bản hoặc trong kho lưu trữ mà bạn đã thực hiện git init. Đi vào kho lưu trữ đó. .gitlà một thư mục ẩn và nhấn Ctrl+ Hsẽ hiển thị thư mục ẩn, ( ls -atrong thiết bị đầu cuối).

Dưới đây là một mẫu của .git/configtập tin. Sao chép và dán các dòng này và chắc chắn cập nhật những dòng đó với thông tin Git của bạn.

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Thay đổi phần URL với định dạng sau cho SSH:

url = git@github.com:happy_feet/my_code.git

( Các định dạng trên không thay đổi với các máy chủ từ xa Git khác nhau như GitHub hoặc Bitbucket. Nó giống nhau nếu bạn đang sử dụng Git để kiểm soát phiên bản ):

Lưu ý: Cách kết nối SSH với kho lưu trữ Git từ xa sẽ yêu cầu bạn thêm khóa SSH công khai vào máy chủ từ xa Git ( như GitHub hoặc Bitbucket. Tìm kiếm trang cài đặt cho các khóa SSH ).

Để biết cách tạo khóa SSH, hãy tham khảo: Tạo khóa SSH


2

Đây là những gì làm việc cho tôi:

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

Thí dụ:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

Cảm ơn bạn Tôi nêu lên câu trả lời của bạn
Mandeep Singh

2

Bạn cần thực hiện hai bước -

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

Lưu ý URL Git là URL SSH chứ không phải URL HTTPS ... Bạn có thể chọn từ đây:

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


2

Nếu bạn đã sao chép HTTPS thay vì SSH và gặp phải vấn đề với tên người dùng và mật khẩu nhắc khi kéo, đẩy và tìm nạp. Bạn có thể giải quyết vấn đề này một cách đơn giản cho UBUNTU

Bước 1: chuyển đến thư mục gốc

cd ~/

tạo một tập tin .git-thông tin đăng nhập

Thêm nội dung này vào tập tin đó với bạn usename passwordgithosting URL

https://user:pass@example.com

Sau đó thực hiện lệnh

git config --global credential.helper store

Bây giờ bạn sẽ có thể kéo đẩy và lấy tất cả các chi tiết từ repo của bạn mà không gặp rắc rối.


0

Nếu bạn đang sử dụng Git (ví dụ: Git Bash) trong Windows (và nếu bạn không muốn chuyển từ HTTPS sang SSH), bạn cũng có thể sử dụng Trình quản lý thông tin Git cho Windows

Ứng dụng này sẽ giữ tên người dùng và mật khẩu cho bạn ...


0

Như nhiều người dùng đã nói, bạn chỉ cần thay đổi URL kho Git của mình từ HTTPS sang SSH.

Nếu bạn chưa tạo khóa SSH trong máy của mình, thì bạn sẽ phải làm điều đó.

Cũng như một thông tin bổ sung, sau khi thực hiện thay đổi này, tôi vẫn nhận được cùng một lỗi:

Quyền bị từ chối.

Trong trường hợp của tôi, vấn đề là tôi đã sử dụng Windows Shell để thực thi lệnh ngh; do lệnh này sẽ mở một dấu nhắc để yêu cầu cụm từ SSH và Windows Shell không mở các loại lời nhắc này, nên việc xác thực không thành công.

Vì vậy, tôi chỉ cần mở shell Git và thực thi lệnh ngh ở đó, đặt cụm từ SSH vào dấu nhắc mỗi khi nó yêu cầu và "voilà" ... Nó chỉ hoạt động tốt!


0
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files
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.