Làm cách nào để lưu tên người dùng và mật khẩu trong git [GitExtension]?


1239

Tôi muốn sử dụng tính năng đẩy và kéo tự động trong GitExtension , mà không cần nhập người dùng và mật khẩu của mình vào một dấu nhắc, mọi lúc.

Vậy làm thế nào tôi có thể lưu thông tin đăng nhập của tôi trong git?


1
Bạn cũng có thể xác thực qua SSH: stackoverflow.com/questions/6565357/
trộm


1
@AntonTaraenko gitconfig của tôi không nói gì về Proxy, chỉ [người dùng] email = email@dummy.com name = uname [cert] helper = store
gc7__

Câu trả lời:


2208

Chạy

git config --global credential.helper store

sau đó

git pull

cung cấp tên người dùng và mật khẩu và những chi tiết đó sẽ được ghi nhớ sau. Thông tin đăng nhập được lưu trữ trong một tệp trên đĩa, với các quyền của đĩa "chỉ người dùng có thể đọc / ghi được" nhưng vẫn ở dạng bản rõ.

Nếu bạn muốn thay đổi mật khẩu sau

git pull

Sẽ thất bại, vì mật khẩu không chính xác, git sau đó xóa người dùng + mật khẩu vi phạm khỏi ~/.git-credentialstệp, vì vậy bây giờ chạy lại

git pull

để cung cấp một mật khẩu mới để nó hoạt động như trước.


6
Làm thế nào là cờ -u quan trọng để thay đổi mật khẩu sau này?
lucidbrot

8
đối với Debian / Ubuntu, hãy sử dụng libsecret stackoverflow.com/questions/36585496/
Kẻ

3
@lucidbrot xin lỗi vì trả lời muộn. git pull -u không hoạt động với phiên bản mới nhất. Tôi đã cập nhật câu trả lời. Hy vọng nó sẽ trả lời câu hỏi của bạn.
Neetika

51
Lưu ý rằng điều này sẽ lưu tên người dùng và mật khẩu của bạn trong một tệp văn bản đơn giản tại ~ / .git-thông tin đăng nhập. Bất cứ ai cũng có thể mở nó và đọc nó.
RoboAlex

12
Điều này không hoạt động. Nó không kéo được.
Urasquirrel

350

Bạn có thể sử dụng git configđể kích hoạt lưu trữ thông tin đăng nhập trong git.

git config --global credential.helper store

Khi chạy lệnh này, lần đầu tiên bạn kéo hoặc đẩy từ kho lưu trữ từ xa, bạn sẽ được hỏi về tên người dùng và mật khẩu.

Sau đó, để liên lạc với kho lưu trữ từ xa, bạn không phải cung cấp tên người dùng và mật khẩu.

Định dạng lưu trữ là một .git-credentialstệp, được lưu trữ trong bản rõ.

Ngoài ra, bạn có thể sử dụng các trình trợ giúp khác cho git config credential.helperbộ nhớ cache, cụ thể là:

git config credential.helper cache <timeout>

trong đó có một tùy chọn timeout parameter, xác định thời gian thông tin đăng nhập sẽ được lưu trong bộ nhớ. Sử dụng trình trợ giúp, thông tin đăng nhập sẽ không bao giờ chạm vào đĩa và sẽ bị xóa sau khi hết thời gian quy định. Các defaultgiá trị900 seconds (15 minutes).


CẢNH BÁO : Nếu bạn sử dụng phương pháp này, mật khẩu tài khoản git của bạn sẽ được lưu ở plaintextđịnh dạng global .gitconfig file, ví dụ như trong linux, nó sẽ là/home/[username]/.gitconfig

Nếu điều này là không mong muốn với bạn, ssh keythay vào đó hãy sử dụng tài khoản của bạn.


3
Chúc bạn hiển thị tệp .gitconfig - lệnh đầu tiên đã bị ghi đè bởi lần thứ hai :(
Adam

3
Đối với git config credential.helper cachemật khẩu sẽ không được lưu vào một tệp, chỉ được lưu trong bộ nhớ. Xem: git-scm.com/docs/git-credential-cache
SA

1
Không hoạt động. Cung cấp gây tử vong: Xác thực thất bại. Thậm chí không yêu cầu mật khẩu.
Philip Rego

2
Giống như một phụ lục - khóa ssh riêng của bạn cũng sẽ được lưu trữ trong bản rõ ở một vị trí có thể truy cập của người dùng, do đó về bản chất là cùng một bề mặt tấn công trong cả hai trường hợp.
Falco

Làm thế nào tôi có thể sử dụng cái này cho gitlab
anil

170

Phương pháp được đề xuất và bảo mật: SSH

Tạo một khóa Github ssh. Tới github.com -> Settings -> SSH và GPG phím -> New SSH Key. Bây giờ lưu khóa riêng của bạn vào máy tính của bạn.

Sau đó, nếu khóa riêng được lưu dưới dạng id_rsa trong thư mục ~ / .ssh / , chúng tôi sẽ thêm nó để xác thực như sau:

ssh-add -K ~/.ssh/id_rsa


Một phương pháp an toàn hơn: Bộ nhớ đệm

Chúng tôi có thể sử dụng git-cert-store để lưu tên người dùng và mật khẩu trong một khoảng thời gian. Chỉ cần nhập thông tin sau vào CLI (terminal hoặc dấu nhắc lệnh):

git config --global credential.helper cache

Bạn cũng có thể đặt khoảng thời gian chờ (tính bằng giây) như sau:

git config --global credential.helper 'cache --timeout=3600'


Một phương pháp thậm chí ít an toàn hơn

Git-cert-store cũng có thể được sử dụng, nhưng lưu mật khẩu trong tệp văn bản đơn giản trên đĩa của bạn như sau:

git config credential.helper store


Câu trả lời lỗi thời - Nhanh chóng và không an toàn

Đây là một phương pháp không an toàn để lưu trữ mật khẩu của bạn trong văn bản thuần túy. Nếu ai đó giành quyền kiểm soát máy tính của bạn, mật khẩu của bạn sẽ bị lộ!

Bạn có thể đặt tên người dùng và mật khẩu của mình như thế này:

git config --global user.name "your username"

git config --global user.password "your password"

16
Điều này không hiệu quả với tôi, git clone vẫn hỏi tên người dùng và mật khẩu
Oliver

11
Tôi không khuyên bạn nên lưu trữ mật khẩu của mình như thế này vì "git config --global -l" sẽ tiết lộ mật khẩu của bạn trên bảng điều khiển
CCC

1
Điều này không làm việc cho tôi. Thật kỳ lạ khi nó nên hoạt động cho bất kỳ ai, vì trong đặc tả của gitconfig không có chỗ cho "mật khẩu"
Hamish Todd

.gitconfig là tệp khác: MẬT KHẨU. Sử dụng "git config --global cert.rcper cache" nếu bạn không thể sử dụng các phím ssh.
skợi

Khi tôi cố gắng thêm người dùng và mật khẩu một cách thủ công, tập tin cấu hình bị hỏng và tôi phải sao chép lại repo. Đừng thử điều này ..
Letie Techera

102

Bật trình trợ giúp thông tin xác thực để Git sẽ lưu mật khẩu của bạn vào bộ nhớ trong một thời gian:

Trong Terminal, nhập thông tin sau:

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

Theo mặc định, Git sẽ lưu mật khẩu của bạn trong 15 phút.

Để thay đổi thời gian chờ bộ đệm mật khẩu mặc định, hãy nhập như sau:

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

Từ trợ giúp của GitHub


7
bạn là người duy nhất đề xuất phiên bản toàn cầu QUAN TRỌNG, vì nó bị hủy hoại cho tôi mỗi khi tôi nhân bản lại repo
Xerus

4
Làm thế nào để thiết lập thời gian chờ đến vô cùng? Tôi không bao giờ muốn nhập lại mật khẩu của mình.
Avamander

8
@Avamander chỉ cần thay thế cachemột phần với store. Vì vậy, lệnh đầy đủ sẽ là : git config --global credential.helper store. Lưu ý rằng điều này sẽ lưu mật khẩu của bạn trong một tệp văn bản mở (không có bất kỳ mã hóa nào, có thể nói là vậy).
Aleksandar

2
@Casper Điều đó không hoạt động với nhiều tài khoản, mật khẩu không được lấy từ cửa hàng dựa trên e-mail như vậy, thay vào đó, tài khoản đầu tiên trong danh sách được lấy.
Avamander

2
@Avamander hm .. đó có phải là như thế không hoặc nó có thể là một lỗi? Giá trị tối đa cho --timeouttham số là gì?
Aleksandar

50

Bạn có thể chỉnh sửa ~/.gitconfigtệp để lưu trữ thông tin đăng nhập của bạn

sudo nano ~/.gitconfig

Mà nên có

[user]
        email = your@email.com
        user = gitUSER

Bạn nên thêm ở dưới cùng của tập tin này.

[credential]
        helper = store

Lý do tôi khuyên bạn nên tùy chọn này là vì nó là toàn cầu và nếu tại bất kỳ thời điểm nào bạn cần xóa tùy chọn bạn biết nơi để đi và thay đổi nó.

CHỈ SỬ DỤNG TÙY CHỌN NÀY TRONG MÁY TÍNH CÁ NHÂN.

Sau đó khi bạn kéo | nhân bản | nhập mật khẩu git của bạn, nói chung, mật khẩu sẽ được lưu ở ~/.git-credentialsđịnh dạng

https://GITUSER:GITPASSWORD@DOMAIN.XXX

Ở ĐÂU DOMAIN.XXX COULD ĐƯỢC GITHUB.COM | BITBucksET.ORG | KHÁC

Xem tài liệu

Khởi động lại thiết bị đầu cuối của bạn.


1
Đừng quên khởi động lại cửa sổ git bash. Chỉ khi tôi làm điều đó, nó làm việc cho tôi.
sofs1

33

Chỉ cần đặt thông tin đăng nhập của bạn vào Url như thế này:

https://Username: Password@github.com/myRepoDir/myRepo.git

Bạn có thể lưu trữ nó như thế này:

git remote add myrepo https://Userna...

... ví dụ để sử dụng nó:

git push myrepo master


Bây giờ đó là Liệt kê các bí danh url:

git remote -v

... và đó là lệnh xóa một trong số chúng:

git remote rm myrepo


8
Bạn cũng có thể để mật khẩu của mình ra khỏi URL để Git sẽ hỏi mật khẩu của bạn, nhưng không phải tên người dùng của bạn.
chuột túi

Thật dễ dàng và an toàn khi sử dụng SSH thay vì HTTP. Vì vậy, bạn có thể giữ bí mật mật khẩu Git của mình và chỉ sử dụng SSH-Key. Thông tin về SSH trên Git: help.github.com/en/enterprise/2.16/user/ mẹo git@github.com:Username/myRepo.git
Loïch

Có mật khẩu của bạn trong url sẽ lưu nó vào lịch sử của thiết bị đầu cuối của bạn để cách này không an toàn.
Josh Correia

Lưu ý rằng một Wiki thể hiện chỉ được nhân bản thông qua https, không ssh, do đó, một giải pháp như thế này có thể hữu ích ở đó. Cũng lưu ý rằng bạn có thể sử dụng mã thông báo oauth, an toàn hơn một chút so với mật khẩu GitHub của bạn.
AstroFloyd

31

Đối với cài đặt chung, mở thiết bị đầu cuối (từ bất kỳ nơi nào) chạy như sau:

  git config --global user.name "your username"
  git config --global user.password "your password"

Do đó, mọi repo git cục bộ mà bạn có trên máy sẽ sử dụng thông tin đó.

Bạn có thể cấu hình riêng cho từng repo bằng cách thực hiện:

  • mở terminal tại thư mục repo.
  • chạy như sau:

    git config user.name "your username"
    git config user.password "your password"
    

Nó chỉ ảnh hưởng đến thư mục đó (vì cấu hình của bạn là cục bộ).


8
Không có gì nguy hiểm khi có những thông tin như vậy trong một tệp cấu hình đơn giản có thể xem được bởi bất kỳ ai?
bool3max

1
Câu hỏi của bạn nên dành cho một chủ đề khác. Ở đây chúng tôi thảo luận về cách cấu hình tên và mật khẩu cho git toàn cầu và cục bộ.
Tuấnanhcwrs

Cảm ơn bạn đã nhập
bool3max

11
Tôi chỉ muốn nói thêm rằng việc hỏi về các vấn đề bảo mật có thể có của một câu trả lời có một chỗ ở đây vì nó ảnh hưởng trực tiếp đến chất lượng của nó và có khả năng hàng ngàn người dùng thực hiện nó.
Michael Kargl

2
không hoạt động với tôi, đã thêm --localthẻ nhưng một lần nữa không có gì xảy ra
PayamBeirami

23

Bạn có thể sử dụng git-cert-store để 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.

Thí dụ

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]

Bạn có thể kiểm tra thông tin đăng nhập được lưu trong tệp ~/.git-credentials

Để biết thêm thông tin, hãy truy cập git-cert-store - Trình trợ giúp lưu trữ thông tin đăng nhập trên đĩa


17

Bạn sẽ an toàn hơn nếu bạn sử dụng xác thực SSH so với xác thực tên người dùng / mật khẩu.

Nếu bạn đang sử dụng máy Mac, xác thực máy khách SSH được tích hợp vào móc khóa MacOS. Khi bạn đã tạo khóa SSH, hãy nhập vào thiết bị đầu cuối của bạn:

ssh-add -K ~/.ssh/id_rsa

Điều này sẽ thêm khóa riêng SSH vào móc khóa MacOS. Máy khách git sẽ sử dụng ssh khi kết nối với máy chủ từ xa. Miễn là bạn đã đăng ký khóa công khai ssh của mình với máy chủ, bạn sẽ ổn.


1
Có nên k không K?
dez93_2000

1
FYI: Tôi đang làm việc trên máy Mac. Phải nói rằng, từ thông tin "người đàn ông": "-k" Khi tải khóa vào hoặc xóa khóa khỏi tác nhân, chỉ xử lý khóa riêng đơn giản và bỏ qua chứng chỉ. "-K" Khi thêm danh tính, mỗi cụm mật khẩu cũng sẽ được lưu trong móc khóa của người dùng. Khi xóa danh tính bằng -d, mỗi cụm mật khẩu sẽ bị xóa khỏi nó.
Birol Efe

3
Tôi không nghĩ rằng công việc này cho các kho lưu trữ dựa trên https.
zakmck

5
Câu trả lời này dường như nhầm lẫn mật khẩu (repos HTTPS) với các khóa riêng của SSH.
Steve Bennett

2
Tôi không đồng ý. Bạn không thể an toàn hơn bằng cách cấp quyền truy cập cho máy chủ SSH. Sử dụng xác thực HTTP, ai đó đánh cắp thông tin đăng nhập sẽ chỉ có quyền truy cập GitHub/GitLab. Ngoài ra mã thông báo được thiết kế để có một cuộc sống hạn chế.
Dimitri Kopriwa

16

Sau khi xem qua hàng tá bài viết SO, blog, v.v., tôi đã thử mọi phương pháp, và đây là những gì tôi nghĩ ra. Nó bao gồm MỌI THỨ.

Vanilla DevOps Git Thông tin & Gói riêng

Đây là tất cả các cách và công cụ để bạn có thể xác thực an toàn git để sao chép kho lưu trữ mà không cần nhắc mật khẩu tương tác .

  • Khóa công khai SSH
    • SSH_ASKPASS
  • Mã thông báo truy cập API
    • GIT_ASKPASS
    • .gitconfig thay thế
    • .gitconfig [thông tin xác thực]
    • .git-thông tin đăng nhập
    • .netrc
  • Gói riêng (miễn phí)
    • nút / npm gói.json
    • python / pip / trứng request.txt
    • đá quý ruby ​​Gemfile
    • golang go.mod

Viên đạn bạc

Muốn chỉ hoạt động ™? Đây là viên đạn bạc ma thuật.

Nhận Mã thông báo truy cập của bạn (xem phần trong áo choàng nếu bạn cần các hướng dẫn Github hoặc Gitea cho điều đó) và đặt nó trong một biến môi trường (cả cho nhà phát triển và triển khai cục bộ):

MY_GIT_TOKEN=xxxxxxxxxxxxxxxx

Đối với Github, sao chép và chạy các dòng này nguyên văn :

git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"

Xin chúc mừng, giờ đây, bất kỳ công cụ tự động nào nhân bản kho git sẽ không bị cản trở bởi một dấu nhắc mật khẩu, cho dù sử dụng https hay kiểu url của ssh url.

Không sử dụng Github?

Đối với các nền tảng khác (Gitea, Github, Bitbucket), chỉ cần thay đổi URL. Không thay đổi tên người dùng (mặc dù tùy ý, chúng cần cho các mục cấu hình riêng biệt).

Khả năng tương thích

Điều này hoạt động cục bộ trong MacOS, Linux, Windows (ở Bash), Docker, CircleCI, Heroku, Akkeris, v.v.

Thêm thông tin

Xem phần ".gitconfig thayOf" của áo.

Bảo vệ

Xem phần "Bảo mật" của áo.


2
Đây là một cứu cánh. Cảm ơn.
annaoomph

2
Những gì tôi đã theo là git config --global credential."https://somegithost.com".username MyUserName, trong áo của bạn, nhưng không phải bất cứ nơi nào khác trong chủ đề trả lời này. Giải pháp cụ thể đó không trả lời câu hỏi của OP, nhưng nó đã trả lời câu hỏi của tôi, cảm ơn!
TheDudeAdides

1
Đây là điều tuyệt vời !!! Câu trả lời tốt nhất, cảm ơn rất nhiều.
Parsa

12

Trong trường hợp đó, bạn cần người trợ giúp thông tin git để báo cho git nhớ mật khẩu và tên người dùng GitHub của bạn bằng cách sử dụng dòng lệnh sau:

git config --global credential.helper wincred 

và nếu bạn đang sử dụng repo bằng khóa SSH thì bạn cần khóa SSH để xác thực.


11

Không có câu trả lời nào ở trên làm việc cho tôi. Tôi tiếp tục nhận được những điều sau đây mỗi lần tôi muốn fetchhoặc pull:

Enter passphrase for key '/Users/myusername/.ssh/id_rsa':


Dành cho máy Mac

Tôi đã có thể ngăn không cho nó hỏi cụm mật khẩu của mình bằng cách:

  1. Mở cấu hình bằng cách chạy: vi ~/.ssh/config
  2. Đã thêm như sau: UseKeychain yes
  3. Đã lưu và thoát: Nhấn Esc , sau đó nhập:wq!

Cho cửa sổ

Tôi đã có thể làm cho nó hoạt động bằng cách sử dụng thông tin trong stackexchange này: https://unix.stackexchange.com/a/12201/348665


đó là bởi vì bạn đang sử dụng giao thức SSH (các câu trả lời khác sử dụng HTTPS).
mariusm

6

Ngoài việc chỉnh sửa ~/.gitconfigtệp, bạn có thể làm gì nếu bạn hỏi:

git config --local --edit

hoặc là

git config --global --edit

Lưu ý để luôn luôn sử dụng dấu ngoặc đơn :

git config --local user.name 'your username'
git config --local user.password 'your password'

hoặc là

git config --global user.name 'your username'
git config --global user.password 'your password'

Tên người dùng và mật khẩu của bạn có thể sử dụng một số ký tự sẽ phá vỡ mật khẩu của bạn nếu bạn sử dụng dấu ngoặc kép.

--localhoặc --globalcó nghĩa là các thông số cấu hình được lưu cho dự án hoặc cho người dùng os.


Cũng kiểm tra này một giải thích nhiều hơn.
prosti

6

chỉ dùng

git config --global credential.helper store

và thực hiện thao tác git , nó sẽ hỏi tên người dùng và mật khẩu, từ giờ nó sẽ không cung cấp bất kỳ lời nhắc nào cho tên người dùng và mật khẩu, nó sẽ lưu trữ các chi tiết


4
Về cơ bản, bạn chỉ cần lặp lại câu trả lời được chấp nhận .
jsamol

4

Lưu tên người dùng và mật khẩu trong thông tin .git

.git-credentialslà nơi tên người dùng và mật khẩu của bạn (mã thông báo truy cập) được lưu trữ khi bạn chạy git config --global credential.helper store, đó là những gì các câu trả lời khác gợi ý, sau đó nhập tên người dùng và mật khẩu hoặc mã thông báo truy cập:

https://${username_or_access_token}:${password_or_access_token}@github.com

Vì vậy, để lưu tên người dùng và mật khẩu (mã thông báo truy cập):

git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials

Điều này rất hữu ích cho robot github, ví dụ: để giải quyết các bản dựng Chuỗi tự động trong cùng một kho chứa docker bằng cách có các quy tắc cho các nhánh khác nhau và sau đó kích hoạt nó bằng cách đẩy nó vào post_pushhooker trong hub docker.

Một ví dụ về điều này có thể được nhìn thấy ở đây trong stackoverflow.


Cảm ơn, bạn là một vị cứu tinh! Chúng tôi cũng có thể đặt https: // $ {access_token}: $ {access_token} @ github.com
Lucas Mendes Mota Da Fonseca

1
@LucasMendesMotaDaFonseca mã thông báo truy cập có thể được sử dụng làm tên người dùng ???
JiaHao Xu

3

Một cách nhanh chóng để lưu thông tin đăng nhập git:

git config credential.helper 'cache' --timeout=10800

đẹp và an toàn

thời gian chờ là tính bằng giây.


2

Sau khi đọc chủ đề đầy đủ và thử nghiệm hầu hết các câu trả lời cho câu hỏi này, cuối cùng tôi đã tìm thấy quy trình phù hợp với mình. Tôi muốn chia sẻ nó trong trường hợp ai đó phải xử lý một trường hợp sử dụng phức tạp nhưng vẫn không muốn xem toàn bộ chủ đề và các trang gitcredentials , gitcredentials-store, v.v., như tôi đã làm.

Tìm bên dưới quy trình tôi đề nghị NẾU bạn (như tôi) phải đối phó với một số kho lưu trữ từ một số nhà cung cấp (GitLab, GitHub, Bitbucket, v.v.) bằng cách sử dụng một số kết hợp tên người dùng / mật khẩu khác nhau. Thay vào đó, nếu bạn chỉ có một tài khoản duy nhất để làm việc, thì bạn có thể sử dụng các giải pháp git config --global credential.helper storehay, git config --global user.name "your username"v.v. đã được giải thích rất rõ trong các câu trả lời trước đó.

Giải pháp của tôi:

  1. bỏ đặt người trợ giúp thông tin toàn cầu, trong trường hợp một số thử nghiệm trước đây được thực hiện :)

> git config --global --unset credentials.helper

  1. di chuyển đến thư mục gốc của repo của bạn và vô hiệu hóa trình trợ giúp thông tin cục bộ (nếu cần)

> cd /path/to/my/repo

> git config --unset credential.helper

  1. tạo một tệp để lưu thông tin đăng nhập của bạn vào

> git config credential.helper 'store --file ~/.git_repo_credentials'

Lưu ý : lệnh này tạo một tệp mới có tên ".git numpo_credentials" vào thư mục chính của bạn, nơi Git lưu thông tin đăng nhập của bạn. Nếu bạn không chỉ định tên tệp, Git sử dụng ".git_credentials" mặc định. Trong trường hợp này, chỉ cần ban hành lệnh sau sẽ làm:

> git config credential.helper store

  1. đặt tên người dùng của bạn

git config credential.*.username my_user_name

Lưu ý : sử dụng "*" thường là ổn nếu kho của bạn đến từ cùng một nhà cung cấp (ví dụ: GitLab). Nếu thay vào đó, kho lưu trữ của bạn được lưu trữ bởi các nhà cung cấp khác nhau thì tôi khuyên bạn nên đặt rõ ràng liên kết đến nhà cung cấp cho mọi kho lưu trữ, như trong ví dụ sau (đối với GitLab):

git config credential.https://gitlab.com.username my_user_name

Tại thời điểm này, nếu bạn ban hành một lệnh yêu cầu thông tin đăng nhập của bạn (ví dụ git pull), bạn sẽ được yêu cầu nhập mật khẩu tương ứng với "my_user_name". Điều này chỉ được yêu cầu một lần vì git lưu thông tin đăng nhập vào ".git numpo_credentials" và tự động sử dụng cùng một dữ liệu ở các lần truy cập tiếp theo.


2

Từ nhận xét của rifrol, trên Linux Ubuntu, từ câu trả lời này , đây là cách thức trong Ubuntu:

sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Một số distro khác cung cấp nhị phân để bạn không phải xây dựng nó.

Trong OS X, nó thường được "xây dựng" với một mô-đun mặc định là "osxkeychain" để bạn có được nó miễn phí.


2

Kiểm tra tài liệu git chính thức:

Nếu bạn sử dụng phương thức truyền tải SSH để kết nối với điều khiển từ xa, bạn có thể có khóa mà không cần cụm mật khẩu, cho phép bạn chuyển dữ liệu một cách an toàn mà không cần nhập tên người dùng và mật khẩu. Tuy nhiên, điều này là không thể với các giao thức HTTP - mọi kết nối đều cần tên người dùng và mật khẩu. Điều này thậm chí còn khó hơn đối với các hệ thống có xác thực hai yếu tố, trong đó mã thông báo bạn sử dụng cho mật khẩu được tạo ngẫu nhiên và không thể phát hiện được.

May mắn thay, Git có một hệ thống thông tin có thể giúp với điều này. Git có một vài tùy chọn được cung cấp trong hộp:

  • Mặc định là không để cache. Mỗi kết nối sẽ nhắc bạn cho tên người dùng và mật khẩu của bạn.

  • Chế độ bộ nhớ cache Chế độ canh giữ các thông tin trong bộ nhớ trong một khoảng thời gian nhất định. Không có mật khẩu nào được lưu trữ trên đĩa và chúng sẽ bị xóa khỏi bộ đệm sau 15 phút.

  • Chế độ lưu trữ trên máy tính xách tay của Chế độ lưu trữ các thông tin xác thực vào một tệp văn bản đơn giản trên đĩa và chúng không bao giờ hết hạn. Điều này có nghĩa là cho đến khi bạn thay đổi mật khẩu cho máy chủ Git, bạn sẽ không bao giờ phải nhập lại thông tin đăng nhập. Nhược điểm của phương pháp này là mật khẩu của bạn được lưu trữ trong Cleartext trong một tệp đơn giản trong thư mục nhà của bạn.

  • Nếu bạn đang sử dụng máy Mac, Git đi kèm với chế độ của osxkeychain, có thể lưu thông tin đăng nhập vào móc khóa an toàn được đính kèm với tài khoản hệ thống của bạn. Phương pháp này lưu trữ thông tin đăng nhập trên đĩa và chúng không bao giờ hết hạn, nhưng chúng được mã hóa với cùng một hệ thống lưu trữ chứng chỉ HTTPS và tự động điền Safari.

  • Nếu bạn đang sử dụng Windows, bạn có thể cài đặt một trình trợ giúp có tên là Trình quản lý thông tin xác thực của Git cho Windows. Điều này tương tự với trình trợ giúp của osxkeychain, được mô tả ở trên, nhưng sử dụng Cửa hàng Thông tin Windows để kiểm soát thông tin nhạy cảm. Nó có thể được tìm thấy tại https://github.com/Microsoft/Git-Credential-Manager-for-Windows .

Bạn có thể chọn một trong các phương pháp này bằng cách đặt giá trị cấu hình Git:

$ git config --global credential.helper cache

$ git config --global credential.helper store

https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

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.