Git Clone từ GitHub qua https với xác thực hai yếu tố


129

Gần đây tôi đã bắt đầu sử dụng xác thực hai yếu tố trên GitHub và hiện tôi không thể sử dụng git qua https trên các kho lưu trữ riêng tư theo cách thông thường:

peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/[...]/MyPrivateRepo/'

Nếu tôi tắt xác thực hai yếu tố, tôi có thể sử dụng nó như trước đây:

peter@computer:~$ git clone https://github.com/[...]/MyPrivateRepo
Cloning into 'MyPrivateRepo'...
Username for 'https://github.com': [...]
Password for 'https://[...]@github.com': 
remote: Counting objects: 147, done.
remote: Total 147 (delta 0), reused 0 (delta 0), pack-reused 147
Receiving objects: 100% (147/147), 22.70 KiB | 0 bytes/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.

Tôi biết mình có thể sử dụng SSH và mọi thứ đều hoạt động, nhưng có cách nào để tôi có thể giữ xác thực hai yếu tố trong khi vẫn có thể sử dụng GitHub qua HTTPS, chẳng hạn bằng cách gửi mã xác thực theo yêu cầu của tôi không?

Câu trả lời:


155

Tìm hiểu cách sửa lỗi này tại đây:

https://github.com/blog/1614-two-factor-authentication#how-does-it-work-for-command-line-git

Nó hoạt động như thế nào đối với Git dòng lệnh?

Nếu bạn đang sử dụng SSH để xác thực Git, hãy yên tâm: bạn không cần phải làm gì cả. Nếu bạn đang sử dụng HTTPS Git, thay vì nhập mật khẩu, hãy nhập mã thông báo truy cập cá nhân. Chúng có thể được tạo bằng cách truy cập trang mã thông báo truy cập cá nhân của bạn .


2
Bạn có thể thêm mã thông báo vào tệp .netrc như tôi đã tìm thấy trong ý chính sau đây , để xác thực cũng tự động.
Martin Woolstenhulme

1
Nhưng tôi đang sử dụng ssh, khi kéo từ github, nó cũng gợi ý tôi nhập mật khẩu và tên người dùng, tại sao lại như vậy? Cảm ơn bạn đã trả lời!
starkshang

3
Nó vẫn không hoạt động đối với tôi sau khi nhập mã thông báo truy cập trong mac sau khi sudo git clone .... hệ thống đang yêu cầu tên người dùng và mật khẩu trong trường mật khẩu Tôi đang nhập mã thông báo nhưng nó không hoạt động với tôi. gặp lỗi tương tự
ojus kulkarni

40
Sử dụng mã thông báo của bạn làm tên người dùng và cung cấp mật khẩu trống.
Kotie Smit

Lưu ý đến khoảng trống thừa khi sao chép thủ công mã thông báo từ trang web github (tức là nếu không sử dụng nút sao chép github). Tôi mất một lúc để hiểu tại sao điều này không hiệu quả với tôi.
gmargari

34

Theo câu trả lời của @ Nitsew , Tạo mã thông báo truy cập cá nhân của bạn và sử dụng mã thông báo làm tên người dùng của bạn và nhập với mật khẩu trống.

Sau này, bạn sẽ không cần bất kỳ thông tin đăng nhập nào để truy cập tất cả (các) repo riêng tư của mình.


Bạn sẽ khuyên bạn nên lưu trữ mã thông báo truy cập trên máy chủ từ xa ở đâu?
bdoubleu

2

Đối với mọi người đang gặp khó khăn, điều làm việc hiệu quả với tôi là tạo mã thông báo truy cập cá nhân và sau đó sử dụng nó làm tên người dùng VÀ mật khẩu (trong lời nhắc mở ra).


1

Nếu repo của bạn đã được kích hoạt 2FA. Rất khuyên bạn nên sử dụng ứng dụng do github.com cung cấp Đây là liên kết: https://desktop.github.com/

Sau khi bạn tải xuống và cài đặt nó. Thực hiện theo hướng dẫn, ứng dụng sẽ yêu cầu bạn cung cấp mật khẩu một lần để đăng nhập. Khi bạn đã điền mật khẩu một lần, bạn có thể thấy repo / dự án của mình ngay bây giờ.


chỉ hữu ích nếu bạn sử dụng windows
Ian Turton

0

Thứ nhất: Nhận mã thông báo truy cập cá nhân. https://github.com/settings/tokens
Thứ 2: Đặt tài khoản và mã thông báo. Ví dụ ở đây:

$ git push
Username for 'https://github.com':            # Put your GitHub account name
Password for 'https://{USERNAME}@github.com': # Put your Personal access token

Liên kết về cách tạo mã thông báo truy cập cá nhân: https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line

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.