【git】git每次都要输入密码

windows和linux下避免git clone和push时每次都需要输入用户名和密码

git 可以用 https 方式访问也可以用 ssh 方式访问

1)https:就是你每次要输入密码那种

2)ssh:用公钥私钥 本地用ssh-keygen生成密钥,分为 私钥和公钥,私钥本地保存,公钥放到服务端

方法一:https协议 配置全局开机存储认证信息

windows

参考:windows下git http协议保存用户名密码

打开个人文件夹,一般为C:\Documents and Settings\用户名,其中有一个.gitconfig的文件,使用记事本打开。如果之前配置了名字和email的话,在这里面会看到。

如何添加配置呢?

1)打开.gitconfig文件夹 追加如下配置

1
2
[credential]
helper=store

2)在终端(git bash)执行 执行之后,可以看到~/.gitconfig文件,也会多了上面那项 直接在

1
git config --global credential.helper store 

下次我们再次输入用户名之后,git就会记住用户名密码,以后就不需再输入了。

这时在上述那个目录底下,可发现生成另外一个文件.git-credentials,里面记录的就是用户名密码了。格式如下:

1
https://{username}:{password}@github.com

linux

参考:Linux之解决每次git pull/git push都需输入密码设置

1
2
3
4
5
6
7
8
9
10
11
# 执行这两条命令
cd / # 我是在/root下面执行的下面的这个命令,所以我的.gitconfig和.git-credentials文件是在/root下生成的
git config --global credential.helper store

# 执行完命令之后会在.gitconfig文件中了下面的内容
[credential]
helper = store

cd到项目目录,执行git pull,会提示输入账号密码。输完这一次以后git pull或git push就不在需要输入密码了(会在根目录生成一个 .git-credentials 文件)

over!!!

其实和windows是一样的!

方法二:ssh协议

本地用ssh-keygen生成密钥,分为 私钥和公钥,私钥本地保存,公钥放到服务端

linux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[root@ubuntu-22 ~]# find / -name ssh-keygen
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
/snap/core20/1587/usr/bin/ssh-keygen
/snap/core20/1587/usr/share/bash-completion/completions/ssh-keygen
/usr/share/bash-completion/completions/ssh-keygen
/usr/bin/ssh-keygen
[root@ubuntu-22 ~]#
[root@ubuntu-22 ~]# /usr/bin/ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:fyr7kENOycEK99SmHaYL3b5tPozhbvykX5ZNUtEai94 root@ubuntu-22
The key's randomart image is:
+---[RSA 3072]----+
| ..|
| . . . o|
| . . + = . +.|
| o * X .. o. |
| o S o. .. .|
| = =. . E= |
| *oo+o + .|
| .o=B+o |
| .**==. |
+----[SHA256]-----+
[root@ubuntu-22 ~]#
[root@ubuntu-22 ~]# cd .ssh
[root@ubuntu-22 .ssh]# ll
total 20
drwx------ 2 root root 4096 1月 29 17:07 ./
drwx------ 6 root root 4096 1月 29 17:06 ../
-rw------- 1 root root 2602 1月 29 17:07 id_rsa
-rw-r--r-- 1 root root 568 1月 29 17:07 id_rsa.pub
-rw-r--r-- 1 root root 142 1月 29 17:06 known_hosts
[root@ubuntu-22 .ssh]#
[root@ubuntu-22 .ssh]# cat id_rsa.pub
ssh-rsa ... root@ubuntu-22

github 设置 把这个公钥放到github的ssh中

这下通过git clone ssh的方式就可以成功clone下来了

1
2
3
4
5
6
7
[root@ubuntu-22 ~]# git clone git@github.com:xxx/xxx.git
Cloning into 'xxx'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

git push也可以了

参考:github设置添加SSH


【git】git每次都要输入密码
http://example.com/2022/05/22/git/【git】git每次都要输入密码/
作者
ningan123
发布于
2022年5月22日
许可协议