Xác thực GitHub không thành công trên https, trả lại địa chỉ email sai


128

Bắt đầu đẩy hoặc bất kỳ hành động nào khác với GitHub từ dòng lệnh (qua https, không phải ssh) gọi tên người dùng và mật khẩu không chỉ thất bại mà khi thực hiện, nó sẽ trả về

Username for 'https://github.com': username
Password for 'https://username@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/username/repository.git/'

Tôi không có @github.comđịa chỉ. Mật khẩu và tên người dùng là chính xác.

Tôi biết tôi có thể chuyển sang SSH và sử dụng các khóa nhưng điều đó không trả lời tại sao xác thực thất bại qua https.


Tài liệu git-scm.com/book/en/, git-config - Nhận và thiết lập kho lưu trữ hoặc tùy chọn toàn cầu git-scm.com/docs/git-config
John Smith

Câu trả lời:


171

Hỗ trợ của GitHub đã xác định gốc rễ của vấn đề ngay lập tức: Ủy quyền hai yếu tố.

Để sử dụng GitHub trên hệ vỏ với https, hãy tạo mã thông báo OAuth . Như trang ghi chú, tôi đã phải xóa thông tin đăng nhập tên người dùng và mật khẩu của mình khỏi Keychain nhưng osx-keychaintại chỗ, mã thông báo được lưu trữ dưới dạng mật khẩu và mọi thứ hoạt động chính xác như trên https mà không có ủy quyền hai yếu tố.


4
+1. Bạn cũng có thể sử dụng một PAT (Mã truy cập cá nhân) trong một netrc được mã hóa: stackoverflow.com/a/18607931/6309
VonC

Sự khác biệt giữa một PAT và OAuth là gì?
lindhe

@lindhe Mã thông báo OAuth là một loại mã thông báo, PAT là mã thông báo OAauth trong trường hợp này.
Kerry Jones

22

Tôi không có @github.comđịa chỉ

Bạn không cần phải: @dấu phân cách giữa tên người dùng: mật khẩu và tên miền.
Nó không phải là một địa chỉ email.

Một url GitHub https đầy đủ sẽ là:

https://username:password@github.com/username/reponame.git

Không có mật khẩu (sau đó sẽ được hỏi trên dòng lệnh), điều đó sẽ cho:

https://username@github.com/username/reponame.git

Nhưng một lần nữa, username@github.comkhông phải là một địa chỉ email, chỉ là phần đầu tiên của thông tin đăng nhập.

Hãy chắc chắn trường hợp của bạn usernamereponameđúng: trường hợp nhạy cảm .

Lưu ý rằng bạn có thể lưu trữ và mã hóa thông tin đăng nhập của mình trong .netrc.gpg(hoặc _netrc.gpgtrên Windows) nếu bạn không muốn xóa thông tin đăng nhập rõ ràng trong url.
Xem " Có cách nào để bỏ qua việc nhập mật khẩu khi sử dụnghttps://github ".


Bạn cũng có thể để lại mật khẩu, gõ mật khẩu mỗi lần. Trong trường hợp đó nó sẽ được https://username@github.com/username/reponame.git.
Đánh dấu Hildreth

Ồ, điều đó có ý nghĩa. Cảm ơn bạn. Tôi biết về độ nhạy của trường hợp và tôi tự tin rằng tên người dùng và mật khẩu tôi đang cung cấp là chính xác. (Chúng hoạt động tốt để đăng nhập vào trang web.) A
ele

2
@ele có, nhưng mật khẩu của bạn có bao gồm các ký tự đặc biệt (như ! * ' ( ) ; : @ & = + $ , / ? # [ ]) không? Họ sẽ cần phải được "mã hóa phần trăm" ( en.wikipedia.org/wiki/Percent-encoding ).
VonC

Mật khẩu là chữ và số. Tôi sẽ thấy những gì 'git remote -v' mang lại khi tôi ở bên cạnh máy nhưng âm thanh như tôi có thể cần liên hệ với bộ phận hỗ trợ của GitHub tiếp theo.
ele

@ele thử cách tiếp cận .netrc trước (thậm chí không mã hóa, chỉ để thử nghiệm). Nếu điều đó không hiệu quả, hỗ trợ GitHub thực sự là bước tiếp theo.
VonC

21
  • Chuyển đến Trình quản lý xác thực => Trình quản lý Windows
  • Xóa mọi thứ liên quan đến tfs
  • Bây giờ bấm vào Thêm một thông tin chung và cung cấp các giá trị sau

    (1) Địa chỉ Internet hoặc mạng: git: https: //tfs.donamain tên (2) tên người dùng: tên người dùng (3) mật khẩu: mật khẩu của bạn

    cái này nên sửa nó


ồ Tôi thích cách nó lưu mật khẩu không chính xác nếu bạn nhập sai. Sau đó, bạn phải tự cập nhật hoặc xóa nó
Kolob Canyon

10

Nó có thể xảy ra trong Windows nếu bạn đã lưu trữ một thông tin đăng nhập khác trước đó. Chuyển đến Trình quản lý thông tin xác thực và xóa thông tin đăng nhập github được lưu trữ


1
Cũng có thể chỉnh sửa trực tiếp mật khẩu trong Trình quản lý thông tin Windows sang mật khẩu mới.
Spenhouet


8

Điều tương tự cũng xảy ra với tôi, khi tôi đã kích hoạt xác thực 2 chiều cho github. Những điều tôi đã làm để giải quyết:

  • Nhận mã thông báo truy cập cá nhân của bạn. Điều này bạn phải kiểm tra và tạo nếu không có sẵn. Liên kết cho điều này: https://github.com/sinstall/tokens
  • Chuyển đến thư mục cục bộ của bạn và xóa thư mục và sao chép lại nhánh từ github.
  • Bây giờ hãy thử lệnh bạn đã thử trước đó, ví dụ: git pull origin master
  • Nhập tên người dùng và Trong mật khẩu, dán mã thông báo được tạo và cũng đừng quên lưu mã thông báo đó ở đâu đó để bạn có thể sử dụng lại nếu cần.

Làm điều này sẽ giải quyết vấn đề của bạn.


Chú thích tốt - điều này đã xảy ra với tôi trên mac => phải tạo lại PAT của tôi
SliverNinja - MSFT

Chúng tôi phải tạo mã thông báo nếu chúng tôi cần các quyền không có trong các mã thông báo được tạo trước đó. Ngoài ra nếu chúng tôi đã mất mã thông báo trước đó, chúng tôi có thể tạo mã thông báo mới này và sử dụng làm mật khẩu để xác thực thay vì mật khẩu git ban đầu của chúng tôi.
Mohd Belal

5

Chỉ cần điều này giúp bất kỳ ai khác, tôi đã đăng nhập vào ứng dụng mac, dòng lệnh hoạt động tốt, nhưng vì sau đó tôi bật 2FA, các lệnh của tôi đã trả về lỗi. Tôi đã phải đăng xuất khỏi ứng dụng, sau đó tôi có thể sử dụng mã thông báo truy cập cá nhân của mình trong các lệnh của mình theo câu trả lời của ele ở đây .

Hy vọng rằng sẽ giúp được ai đó!


-2

Trên Windows, bạn có thể bị chặn âm thầm bởi tường lửa Antivirus hoặc Windows. Tạm thời tắt các dịch vụ đó và đẩy / kéo từ nguồn gốc từ xa.

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.