Tại sao Github yêu cầu tên người dùng / mật khẩu khi làm theo các hướng dẫn trên màn hình và đẩy một repo mới?


298

Tôi là chủ sở hữu của một tổ chức trên github và vừa tạo một repo và đã cố gắng đẩy nhưng tôi đang gặp phải một vấn đề trong đó nó yêu cầu tôi nhập tên người dùng mặc dù tôi có thể SSH tốt:

$ ssh -T git@github.com
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

Tôi đang làm gì sai? Điều này chưa bao giờ xảy ra với tôi trước đây nhưng gần đây tôi cũng đã nâng cấp lên git 1.7.10.3.

Câu trả lời:


662

Thay vào đó, đừng sử dụng HTTP, hãy sử dụng SSH

thay đổi

https://github.com/WEMP/project-slideshow.git 

đến

git@github.com:WEMP/project-slideshow.git

bạn có thể làm điều đó trong .git/configtập tin


1
Cảm ơn! Tôi chỉ tìm ra điều này sau khi đọc stackoverflow.com/a/10126412/29347 , tôi không nghĩ github thường cho tôi một repo từ xa như HTTPS gây ra một số nhầm lẫn.
Kit Sunde

2
Bạn có thể thay đổi tùy chọn này bằng cách nhấp vào nút nơi bạn sao chép url bản sao của mình.
Derek Adair

Đối với MacOS. Vấn đề khi bạn nâng cấp lên macos mới nhất. stackoverflow.com/a/39416339/1445102
1Rhino

12
Bạn cũng có thể làm git remote set-url origin git@github.com:user/repo.git, như chi tiết trong stackoverflow.com/questions/10126381/ Kẻ
Và cuối cùng là

54

Tôi đã có vấn đề tương tự và tự hỏi tại sao nó không xảy ra với repo bitbucket được sao chép bằng https. Nhìn vào nó một chút tôi thấy rằng cấu hình cho repo BB có một URL bao gồm tên người dùng của tôi. Vì vậy, tôi đã tự chỉnh sửa cấu hình cho repo GH của mình như vậy và voila, không cần thêm tên người dùng. Tôi đang ở trên Windows.

Chỉnh sửa your_repo_dir/.git/config(nhớ: .gitthư mục bị ẩn)

Thay đổi:

https://github.com/WEMP/project-slideshow.git

đến:

https://*username*@github.com/WEMP/project-slideshow.git

Lưu các tập tin. Làm một git pullđể kiểm tra nó.

Cách thích hợp để làm điều này có lẽ là bằng cách sử dụng các lệnh git bash để chỉnh sửa cài đặt, nhưng chỉnh sửa tệp trực tiếp dường như không phải là một vấn đề.


Đó là một điểm tốt, nếu bạn bao gồm tên người dùng, nó sẽ được xử lý bởi móc khóa OS (ít nhất là trong OSX và rõ ràng là trong Windows). Không có sự khác biệt giữa chỉnh sửa tệp bằng notepad hoặc với vim / emacs / nano / vi, tôi sẽ không lo lắng nhiều về vấn đề hợm hĩnh kỹ thuật dù sao nó cũng chỉ là một tệp văn bản đơn giản.
Kit Sunde

20

Đây là một câu trả lời chính thức cho điều này:

Nếu Git nhắc bạn tên người dùng và mật khẩu mỗi khi bạn cố gắng tương tác với GitHub, thì có lẽ bạn đang sử dụng URL bản sao HTTPS cho kho lưu trữ của mình.

Sử dụng URL từ xa HTTPS có một số lợi thế: dễ cài đặt hơn SSH và thường hoạt động thông qua tường lửa và proxy nghiêm ngặt. Tuy nhiên, nó cũng nhắc bạn nhập thông tin đăng nhập GitHub của bạn mỗi khi bạn kéo hoặc đẩy kho lưu trữ.

Bạn có thể cấu hình Git để lưu trữ mật khẩu cho bạn. Nếu bạn muốn thiết lập nó, hãy đọc tất cả về việc thiết lập bộ đệm ẩn mật khẩu .


1
Cảm ơn. Tôi sẽ tranh luận với Github rằng nó không dễ cài đặt hơn nếu bạn kết thúc tại đây (:
ecoologic 30/03/19

Đây là một câu trả lời cho một câu hỏi bởi vì câu hỏi hỏi, TẠI SAO ?
eli

14

Cải thiện câu trả lời của @ Ianl ,

Có vẻ như nếu xác thực 2 bước được bật, bạn phải sử dụng mã thông báo thay vì mật khẩu. Bạn có thể tạo mã thông báo ở đây .

Nếu bạn muốn tắt lời nhắc cho cả tên người dùng và mật khẩu thì bạn có thể đặt URL như sau -

git remote set-url origin https://username:password@github.com/WEMP/project-slideshow.git

Lưu ý rằng URL có cả tên người dùng và mật khẩu. Ngoài ra các .git/configtập tin sẽ hiển thị các thiết lập hiện tại của bạn.


Cập nhật 20200128:

Nếu bạn không muốn lưu trữ mật khẩu trong tệp cấu hình, thì bạn có thể tạo mã thông báo cá nhân của mình và thay thế mật khẩu bằng mã thông báo. Dưới đây là một số chi tiết .

Nó sẽ trông như thế này -

git remote set-url origin https://username:token@github.com/WEMP/project-slideshow.git

Điều này có an toàn không? Ai đó có thể truy cập thông tin này từ máy tính của tôi không?
Akaisteph7

Có, họ có thể truy cập từ máy tính của bạn vì chúng được lưu trữ trong văn bản thuần túy trong .git/configtệp
kaushal

11

một lưu ý bổ sung:

nếu bạn đã thêm một điều khiển từ xa ($ git remote add origin ...) và cần thay đổi điều khiển từ xa cụ thể đó thì hãy xóa từ xa trước ($ git remote rm origin), trước khi thêm lại URL repo mới và được cải thiện (trong đó "origin" là tên của repo từ xa).

để sử dụng ví dụ ban đầu:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://github-username@github.com/WEMP/project-slideshow.git

4
Bạn không phải loại bỏ điều khiển từ xa. Bạn chỉ có thể thay đổi URL:git remote set-url origin https://github-username@github.com/WEMP/project-slideshow.git
shovavnik

8

Nếu bạn đang sử dụng HTTPS, hãy kiểm tra để đảm bảo rằng URL của bạn là chính xác. Ví dụ:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.

1
Đó là một điểm tuyệt vời! Nếu bạn có một lỗi đánh máy trong URL, bạn sẽ được nhắc nhập 'Tên người dùng' thay vì được thông báo rằng kho lưu trữ không tồn tại.
dmitrii

5

Tôi vừa có một email từ quản trị viên github.com nêu rõ: "Chúng tôi thường khuyên mọi người nên sử dụng URL HTTPS trừ khi họ có lý do cụ thể để sử dụng giao thức SSH. Vì vậy, HTTPS an toàn và dễ cài đặt hơn, vì vậy chúng tôi mặc định rằng khi một kho lưu trữ mới được tạo ra. "

Dấu nhắc mật khẩu thực sự chấp nhận các chi tiết đăng nhập github.com bình thường. Hướng dẫn về cách thiết lập bộ đệm ẩn mật khẩu có thể được tìm thấy tại https://help.github.com/articles/set-up-git#password-caching . Tôi đã làm theo các bước trong hướng dẫn, và nó đã làm việc cho tôi.



4

Bởi vì bạn đang sử dụng cách HTTPS . HTTPS yêu cầu bạn nhập quyền truy cập tài khoản của bạn mỗi khi bạn cố gắng đẩy hoặc kéo , nhưng cũng có một cách, gọi là SSH và nó cho phép bạn nói với git, rằng tôi cấp phép cho tài khoản của tôi cho máy tính này và không bao giờ hỏi tôi một lần nữa về bất kỳ người dùng truy cập . Để sử dụng nó, bạn phải tạo khóa SSHthêm nó vào tài khoản Github của bạn chỉ một lần . Để làm điều đó, bạn có thể làm theo các bước sau

Cách tạo khóa SSH cho Github


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.