[Git]ssh模式每次提交都要输入密码
问题描述
连接用的ssh,不是https。每次git提交都要输入密码,很麻烦。
原因分析
ssh模式需要在git服务端保存密钥,不然每次都会校验用户的身份。
解决方案
1.生成密钥
进到用户路径下 C:\Users\szx\, 打开bash
生成密钥:
ssh-keygen -t rsa -b 4096 -C "yourmail@emailwebsite.net"
-
-t rsa
指定密钥类型为 RSA。 -
-b 4096
指定密钥长度为 4096 位。 -
-C
后面跟上你的邮箱,用于标识密钥。
2.添加私钥到ssh agent
启动 ssh-agent:
eval "$(ssh-agent -s)"
添加私钥到ssh agent:
ssh-add "C:\Users\szx\.ssh\id_rsa"
3.添加公钥到git服务器
查看公钥内容:
cat "C:\Users\szx\.ssh\id_rsa.pub"
将公钥内容复制到git服务器。
GitHub: 设置 -> SSH and GPG keys -> New SSH key
GitLab: Profile settings -> SSH Keys -> Add SSH Key
Gitblit: 用户中心 -> SSH Keys -> 添加
注意:是复制公钥!!!不是私钥!
公钥对应文件是id_rsa.pub, 私钥是id_rsa。
公钥内容末尾会有你输入的邮件地址,复制的时候连同邮件地址一起复制。
如果复制的是私钥,git服务器可能会没有响应或报错,因为它识别不了。
钥匙都准备好后,再git push就不需要输入密码了。