GitHub: tên người dùng hoặc mật khẩu không hợp lệ


402

Tôi có một dự án được lưu trữ trên GitHub. Tôi thất bại khi cố gắng đẩy các sửa đổi của tôi trên bản gốc. Tôi luôn nhận được thông báo lỗi sau

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

Tuy nhiên, đặt khóa ssh của tôi thành github có vẻ ổn. Thật vậy, khi tôi làm ssh -T git@github.comtôi nhận được

Hi eurydyce! You've successfully authenticated, but GitHub does not provide shell access.

Điều đó dường như chỉ ra rằng mọi thứ đều ổn từ phía đó (eurydyce là tên người dùng github của tôi). Tôi thực hiện đúng các hướng dẫn được đưa ra trên github và các khuyến nghị của nhiều cuộc thảo luận ngăn xếp nhưng không có cách nào. Bạn có biết tôi đã làm gì sai không?


Tôi không chắc mình có nên đăng câu trả lời hay không (rất có thể nhận được downvote), vì tôi đã giải quyết thông báo lỗi này bằng cách thay đổi mật khẩu trong cài đặt github sau khi thử nhiều lần với mật khẩu "chính xác" (kiểm tra bằng cách kiểm tra phần tử).
Trái cây

Câu trả lời:


274

https: //git@github.com/eurydyce/MDANSE.git không phải là url ssh, nó là một https (sẽ yêu cầu tên tài khoản GitHub của bạn, thay vì ' git').

Cố gắng sử dụng ssh://git@github.com:eurydyce/MDANSE.githoặc chỉgit@github.com:eurydyce/MDANSE.git

git remote set-url origin git@github.com:eurydyce/MDANSE.git

Các OP Pellegrini Eric cho biết thêm:

Đó là những gì tôi đã làm trong ~/.gitconfigtệp có chứa các mục sau đây[remote "origin"] url=git@github.com:eurydyce/MDANSE.git

Điều này không nên có trong cấu hình toàn cầu của bạn (một trong ~/).
Bạn có thể kiểm tra git config -lrepo của mình: url đó sẽ được khai báo trong cấu hình cục bộ : <yourrepo>/.git/config.

Vì vậy, hãy chắc chắn rằng bạn đang ở trong đường dẫn repo khi thực hiện git remote set-urllệnh.


Như đã lưu ý trong câu trả lời của Oliver , URL HTTPS sẽ không sử dụng tên người dùng / mật khẩu nếu xác thực hai yếu tố (2FA) được kích hoạt.

Trong trường hợp đó, mật khẩu phải là một PAT (mã thông báo truy cập cá nhân) như được thấy trong " Sử dụng mã thông báo trên dòng lệnh ".

Điều đó chỉ áp dụng cho URL HTTPS, SSH không bị ảnh hưởng bởi giới hạn này.


ôi! Bạn đã đúng, làm cho những thay đổi trong cấu hình cục bộ của tôi làm mọi thứ hoạt động. Cảm ơn rất nhiều.
Eurydice

80
Không hiểu câu trả lời này chút nào
Cloud

1
@Clo chắc chắn, phần nào thiếu rõ ràng, làm thế nào tôi có thể cải thiện câu trả lời này?
VonC

Tôi đã có liên kết bản sao https, không hoạt động. Nhưng tôi đã thay thế bằng git @ url và nó bắt đầu hoạt động. Điều gì có thể là lý do cho điều này? Tôi cũng loại bỏ một số mục github khỏi móc khóa mac của tôi. Điều đó có thể liên quan? Tuy nhiên, tôi đã sử dụng nó thông qua ssh bằng cách cấu hình các phím. Bất kỳ con trỏ sẽ hữu ích trong việc này.
cg

1
@byronaltice Nếu đây là SSH, điều đó có nghĩa là bạn có một ~/.ssh/confighoặc một %USERPROFILE%\.ssh\configtệp, với một github.commục trong đó.
VonC

1011

Sau khi kích hoạt Two Factor Authentication (2FA), bạn có thể thấy một cái gì đó như thế này khi cố gắng sử dụng git clone, git fetch, git pullhoặc git push:

$ git push origin master
Username for 'https://github.com': your_user_name
Password for 'https://your_user_name@github.com': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/your_user_name/repo_name.git/'

Tại sao điều này xảy ra

Từ tài liệu Trợ giúp của GitHub :

Sau khi 2FA được bật, bạn sẽ cần nhập mã thông báo truy cập cá nhân thay vì mã 2FA và mật khẩu GitHub của bạn.

...

Ví dụ, khi bạn truy cập vào một kho lưu trữ sử dụng Git trên dòng lệnh sử dụng lệnh như git clone, git fetch, git pullhoặc git pushvới HTTPS URL, bạn phải cung cấp tên GitHub của bạn và truy cập cá nhân của bạn thẻ khi được nhắc cho một tên người dùng và mật khẩu. Dấu nhắc dòng lệnh sẽ không chỉ định rằng bạn nên nhập mã thông báo truy cập cá nhân khi yêu cầu mật khẩu của bạn.

Cách khắc phục

  1. Tạo mã thông báo truy cập cá nhân . (Hướng dẫn chi tiết về Tạo mã thông báo truy cập cá nhân cho dòng lệnh .)
  2. Sao chép mã thông báo truy cập cá nhân.
  3. Thử lại lệnh bạn đang thử và sử dụng Mã thông báo truy cập cá nhân thay cho mật khẩu của bạn.

Câu hỏi liên quan: https://stackoverflow.com/a/21374369/101662


14
Kudo và upvote; thế hệ mã thông báo mới là những gì tôi cần. Cũng thế; "Sao chép mã" bao gồm các ký tự bổ sung (không hợp lệ) vì vậy tôi phải nhập thủ công khóa ngẫu nhiên .... 20 [?] của mình.
th3byrdm4n

7
Đây là vấn đề của tôi, sau khi thêm 2 yếu tố auth, điều mà tôi nghi ngờ, tuy nhiên tài liệu về điều này còn thiếu. Cảm ơn câu trả lời!
Pogrindis

11
@BeauSmith: Đó là cách chỉnh sửa đáng kể hơn chúng ta thường cho phép. Về cơ bản bạn hoàn toàn viết lại câu trả lời này. Xin vui lòng gửi đó là của riêng bạn, câu trả lời riêng thay thế. Cũng xem Bạn sẽ làm gì nếu ai đó về cơ bản viết lại toàn bộ câu trả lời của bạn?
Martijn Pieters

8
Tất cả chúng ta hãy cho phép quyết định quay trở lại hoặc không được quyết định bởi @Oliver tại đây - có một cuộc tranh luận hoàn hảo về mặt âm thanh
Flexo

10
Biên tập viên ở đây, dường như mọi người đánh dấu câu trả lời này là chính xác (như bản thân tôi) đến trang này vì một vấn đề hơi khác so với người hỏi dự định, tôi đã cố gắng thêm một số thuật ngữ "nước trái cây google" và làm cho câu trả lời trực quan hơn hấp dẫn để những người khác tìm kiếm giải pháp này có thể tìm thấy nó. Cố gắng để làm cho mọi thứ tốt hơn cho cộng đồng. 😀
Beau Smith

86

Các bước giải pháp:

  1. Bảng điều khiển
  2. Quản lý tin cậy
  3. Nhấp vào Thông tin cửa sổ
  4. Trong phần Thông tin chung, sẽ có git url, cập nhật tên người dùng và mật khẩu
  5. Khởi động lại Git Bash và thử bản sao

4
Tôi đã gặp vấn đề này với phiên bản công ty của github (vì vậy sử dụng tên người dùng / mật khẩu cục bộ). Giải pháp này đã sửa nó.
mkennedy

Trong các cửa sổ mới, bạn có thể tìm kiếm "thông tin Windows" hoặc tương tự bằng ngôn ngữ của bạn. Nó sẽ hiện ra một kết quả và bạn có thể thử giải pháp này.
Charles Tempo

1
Giải pháp hoàn hảo cho github tại cơ sở, nơi các công ty bắt buộc bạn sử dụng https
avi.elkharrat

56

Nếu như tôi, bạn vừa cập nhật mật khẩu và chạy git pushđể gặp vấn đề này, thì có một cách khắc phục cực kỳ dễ dàng.

Chỉ dành cho người dùng Mac. Bạn cần xóa các mục truy cập OSX Keychain cho GitHub. Bạn có thể làm điều đó thông qua thiết bị đầu cuối bằng cách chạy các lệnh sau.

Xóa thông tin đăng nhập của bạn thông qua dòng lệnh

Thông qua dòng lệnh, bạn có thể sử dụng trực tiếp trình trợ giúp thông tin để xóa mục nhập móc khóa.

Để làm điều này, gõ lệnh sau:

git credential-osxkeychain erase
host=github.com
protocol=https

# [Now Press Return]

Nếu nó thành công, không có gì sẽ in ra. Để kiểm tra xem nó có hoạt động không, hãy thử và sao chép một kho lưu trữ từ GitHub hoặc chạy lại hành động trước đó của bạn như trong trường hợp của tôi git push. Nếu bạn được nhắc nhập mật khẩu, mục nhập móc khóa đã bị xóa.


2
Đối với cửa sổ: git cert-wincred erase host = github.com Protocol = https
Juan Uribe

Tôi đã gặp vấn đề này trên repo BitBucket. Câu trả lời này host=bitbucket.orgthay vì GitHub đã sửa nó cho tôi.
gutch

26

Khi sử dụng https://URL để kết nối với kho lưu trữ từ xa, Git sẽ không sử dụng SSH làm xác thực mà thay vào đó sẽ thử xác thực cơ bản qua HTTPS. Thông thường, bạn sẽ chỉ sử dụng URL mà không có tên người dùng, ví dụ: https://github.com/username/repository.gitvà sau đó Git sẽ nhắc bạn nhập cả tên người dùng (tên người dùng GitHub của bạn) và mật khẩu của bạn.

Nếu bạn sử dụng https://something@github.com/username/repository.git, thì bạn đã đặt trước tên người dùng Git sẽ sử dụng để xác thực : something. Vì bạn đã sử dụng https://git@github.com, Git sẽ cố gắng đăng nhập bằng gittên người dùng mà mật khẩu của bạn dĩ nhiên không hoạt động. Vì vậy, bạn sẽ phải sử dụng tên người dùng của bạn để thay thế.

Thay thế thực sự là sử dụng SSH để xác thực. Bằng cách đó bạn sẽ tránh phải nhập mật khẩu mọi lúc; và vì nó dường như đã hoạt động, đó là những gì bạn nên sử dụng.

Để làm điều đó, bạn cần thay đổi URL từ xa, vì vậy Git biết rằng nó cần kết nối qua SSH. Các định dạng sau đó là : git@github.com:username/repository. Để cập nhật URL của bạn, hãy sử dụng lệnh này:

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

Khi thử lệnh của bạn, tôi nhận được thông báo sau warning: remote.origin.url has multiple values. Điều này có thể là do tôi đã có một thẻ từ xa trong tệp ~ / .gitconfig chứa giá trị [remote "origin"] url=git@github.com:eurydyce/MDANSE.git.
Eurydice

18

chỉ cần cố gắng đẩy nó đến chi nhánh của bạn một lần nữa. Điều này sẽ hỏi lại tên người dùng và mật khẩu của bạn, vì vậy bạn có thể cung cấp mật khẩu đã thay đổi. Vì vậy, mật khẩu mới của bạn sẽ được lưu trữ lại trong bộ đệm.


4
Không chắc chắn tại sao điều này có một downvote. Trong trường hợp của tôi, thông tin đăng nhập của tôi đã được cập nhật và thông báo thứ hai được git pushnhắc về bản cập nhật phù hợp, vì câu trả lời này cho biết.
Chấn thương kỹ thuật số

Không chắc chắn, ý của bạn là gì, nó không yêu cầu thông tin đăng nhập mới git push origin master...
Betlista

13

Thay vì git pullcũng cố gắnggit pull origin master

Tôi đã thay đổi mật khẩu và lệnh đầu tiên đã báo lỗi:

$ git pull
remote: Invalid username or password.
fatal: Authentication failed for ...

Sau git pull origin masterđó, nó hỏi mật khẩu và dường như tự cập nhật


7

Không cần phải dựa vào việc tạo Mã thông báo truy cập cá nhân và sau đó thử và sử dụng Mã thông báo truy cập cá nhân thay cho mật khẩu của bạn.

Khắc phục nhanh là đặt URL từ xa của bạn để trỏ đến sshkhông https.

Làm cái này git remote set-url origin git@github.com:username/repository


5

Tôi nhận được điều này trong khi nhân bản ứng dụng từ bitbucket:

Cloning into 'YourAppName'...
Password for 'https://youruser id': 
remote: Invalid username or password

Tôi đã giải quyết nó. Ở đây bạn cần tạo mật khẩu cho userid của bạn

  1. Nhấp vào Hồ sơ và cài đặt của bạn Nhấp vào Hồ sơ và cài đặt của bạn

  2. Sau đó Tạo mật khẩu ứng dụng chọn mật khẩu tên của bạn sẽ được tạo, dán mật khẩu đó vào thiết bị đầu cuối Tạo mật khẩu ứng dụng


4

Vô hiệu hóa xác thực 2 yếu tố tại github làm việc cho tôi.

Tôi thấy rằng có một câu trả lời bị xóa nói lên điều này, với lý do xóa là "không trả lời câu hỏi". Nếu nó hoạt động, thì tôi nghĩ nó trả lời câu hỏi ...


Điều này thật kỳ lạ. Điều tương tự cũng xảy ra với tôi. Tôi chỉ vô hiệu hóa xác thực hai yếu tố và nó hoạt động ngay bây giờ cho tôi. :)
abhijeetps

Điều này làm việc cho tôi vào tháng sáu năm 2020. Cảm ơn!
Gcamara14

4

Tôi đã làm:

$git pull origin master

Sau đó, nó yêu cầu [Tên người dùng] & [Mật khẩu] và dường như nó đang hoạt động tốt.


Điều này làm việc cho tôi. Tôi đã sử dụng tìm nạp thay vì kéo nhưng dù sao nó không thành vấn đề. Mát mẻ!
atereshkov

2

Trong trường hợp bạn nhận được thông báo lỗi này trong tình huống này:

  • sử dụng github để tham gia
  • sử dụng thông tin xác thực = wincred trong git config
  • sử dụng thông tin đăng nhập windows của bạn mà bạn đã thay đổi gần đây

Sau đó nhìn vào câu trả lời này: https://stackoverflow.com/a/39608906/521257

Windows lưu trữ thông tin đăng nhập trong trình quản lý thông tin đăng nhập, xóa hoặc cập nhật thông tin.


1

Bạn có thể gặp lỗi này vì bạn đã cập nhật mật khẩu của mình. Vì vậy, trên Terminal trước tiên hãy đảm bảo bạn xóa thông tin đăng nhập GitHub của mình khỏi móc khóa và sau đó đẩy các thay đổi của bạn sang repo, thiết bị đầu cuối sẽ hỏi tên người dùng và mật khẩu của bạn.


1

Tôi gặp vấn đề tương tự. Và tôi đã giải quyết nó bằng cách thay đổi đường dẫn của chi nhánh từ xa https://github.com/YourName/RepoNamesang git@github.com:YourName/RepoName.gittrong cài đặt của ứng dụng khách.


1

Tôi liên tục gặp phải vấn đề này. Đảm bảo bạn đặt git --config user.name "" chứ không phải tên thật của bạn, điều mà tôi đã thực hiện vài lần ..


0

Vì bạn có thể muốn duy trì kích hoạt 2FA cho tài khoản của mình, bạn có thể thiết lập khóa ssh và theo cách đó bạn sẽ không cần phải nhập thông tin đăng nhập Github của mình mỗi khi bạn muốn đẩy công việc lên Github.

Bạn có thể tìm thấy tất cả các bước thiết lập ssh trong tài liệu . Trước tiên, hãy đảm bảo rằng bạn hiện không có bất kỳ khóa ssh nào (id_rsa.pub, v.v.) với$ ls -al ~/.ssh


-1
  1. Bảng điều khiển
  2. Quản lý uy tín
  3. Tìm kiếm các tùy chọn webcredentials và thông tin cửa sổ
  4. trong một trong hai bạn sẽ tìm thấy thông tin github sửa nó với thông tin xác thực chính xác
  5. mở phiên bản mới của git bash, bạn sẽ có thể thực hiện các lệnh git của mình.

Điều này làm việc cho tôi, tôi đã có thể kéo và đẩy vào repo từ xa của mình.


-1

Tôi chỉ vô hiệu hóa xác thực Hai yếu tố và thử lại. Nó làm việc cho tôi.


-3

Giải pháp này hiệu quả với tôi:

  1. mở Bảng điều khiển
  2. Chuyển đến Trình quản lý thông tin xác thực
  3. Nhấp vào Thông tin cửa sổ
  4. Trong phần Thông tin chung, sẽ có git url, cập nhật tên người dùng và mật khẩu
  5. Khởi động lại Git Bash và thử bản sao

1
Câu trả lời này trùng lặp một câu trả lời hiện có không hữu ích. Khi bạn có đủ danh tiếng (15, tôi tin), bạn có thể bỏ phiếu cho câu trả lời mà bạn thấy hữu ích. Bỏ phiếu sẽ là phản hồi chính xác thay vì thêm câu trả lời trùng lặp này.
AdrianHHH
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.