windows git:添加SSH key

git若是使用https协议,每次push时都会提示输入用户名和密码,使用ssh秘钥(git协议)则能够避免这一麻烦。git

配置方法:
一、进入目录~/.sshgithub

$ cd ~/.ssh
1
在windows下,这个目录通常为C:\Users\your_username.sshshell

二、建立ssh keywindows

$ ssh-keygen -t rsa -C "your_email@example.com"
1
代码参数含义:bash

-t 指定密钥类型,默认是rsa,能够省略。
-C 设置注释文字,好比邮箱。
-f 指定密钥文件存储文件名。dom

以上代码省略了 -f 参数,所以,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的ssh key代码,如:ssh

Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
1
2
若不输入直接按enter,则使用默认文件名(强烈建议这么作!!!!),并在~/.ssh目录下生成id_rsa和id_rsa.pub两个文件编辑器

而后会提示输入密码ide

Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:
1
2
这个密码是每次push时须要输入的密码。一样地,也能够不输入密码,直接按回车跳过这个步骤,这样之后push的时候才能不用输密码工具

以后就会显示以下

Your identification has been saved in /c/Users/saltyfish/.ssh/id_rsa.
Your public key has been saved in /c/Users/saltyfish/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BRxQ5G4VITTmcxEO9da8AL8MIg9Aw/2bRgQiR3D4Xto qxy65535@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
|    .o. oO&+*=   |
|     .o..O+* + o |
|       .o.B.+..oo|
|        .=.= oo o|
|        So*.+. o.|
|         =+o.Eo .|
|        .  .   o |
|                 |
|                 |
+----[SHA256]-----+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
三、添加ssh key到github
到key生成目录~/.ssh下找到id_rsa.pub文件并用编辑器打开,复制里面的内容;
在github->setting->SSH and GPG keys的SSH keys选择New SSH key,将从id_rsa.pub中复制到的内容粘贴进去并点击Add SSH key

这样就OK了

四、测试ssh key
在git bash中输入

$ ssh -T git@github.com
1
获得如下回应就算成功

$ ssh -T git@github.com
Hi qxy65535! You've successfully authenticated, but GitHub does not provide shell access.
1
2
五、使用ssh进行push
在git bash输入remote -v查看当前的remote url

$ git remote -v
1
若获得的链接是以https开头的,例如

origin  https://github.com/qxy65535/tfjs_test.git (fetch)
origin  https://github.com/qxy65535/tfjs_test.git (push)
1
2
说明此时是以https协议访问该仓库,若配完ssh key不想每次输密码,须要将它替换成git协议:

$ git remote set-url origin git@github.com:qxy65535/tfjs_test.git
1
之后再用git push就不须要密码了

遇到的问题
一、使用ssh -T出现Permission denied (publickey).
缘由:SSH密钥对不匹配。这个错误主要密匙全路径名不相符,结果致使本地的SSH工具没法找到到正确的密匙。
解决:首先检查步骤2中生成的两个文件是否确实在~/.ssh路径下,如过不是,把它们移过去。
其次是很是重要的一点,若是你在步骤2中自定义了ssh key的文件名,那么缘由就在于你的命名与ssh内设定的名字不一致,所以须要手动添加秘钥。不少教程大概不是windows系统。。直接让输入命令

$ ssh-add ~/.ssh/你的文件名
1
因而就有了问题2

二、执行ssh-add时出现Could not open a connection to your authentication agent
其实应该将自定义名字的秘钥交给ssh-agent管理:GitHub help:Generating a new SSH key and adding it to the ssh-agent

# start the ssh-agent in the background
$ eval $(ssh-agent -s)
Agent pid 59566
$ ssh-add ~/.ssh/id_rsa
1
2
3
4
可是这样很麻烦,难道每次重启git bash都要打这么一套前奏吗??
固然不会,因此能够把这段代码加入到git bash的启动脚本中去。
使用编辑器打开Git安装目录下的etc/bash.bashrc文件,在末尾添加两行

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/你的文件名
1
2
保存退出便可。

用ssh-add除了能更改ssh秘钥的文件名,也彻底能够用来更改秘钥的路径,好比ssh-add your_path/your_key

遇到的问题都是起源于给ssh key文件自定义了一个文件名。。因此没什么特殊要求的话,仍是一路enter使用默认吧_(:3」∠)_ ---------------------  做者:sssaltyfish  来源:CSDN  原文:https://blog.csdn.net/weixin_43344725/article/details/83388291  版权声明:本文为博主原创文章,转载请附上博文连接!

相关文章
相关标签/搜索