zqifa的博客

我不管,反正我最萌~

windows下给 Git Bash 添加ssh key私钥实现git免密

git如果使用http/https协议,每次push时都会提示输入用户名和密码,使用ssh秘钥(git协议)则可以避免这一麻烦。

1.添加ssh key私钥

依次执行以下命令:

exec ssh-agent bash
eval ssh-agent -s
ssh-add "C:\Users\Administrator\.ssh\id_rsa"

说明:
1.命令ssh-add "C:\Users\Administrator\.ssh\id_rsa"中,引号中的路径就是你私匙文件的路径,路径需要使用英文双引号包裹。

Identity added: C:\Users\Administrator\.ssh\id_rsa (C:\Users\Administrator\.ssh\id_rsa)

提示Identity added :说明已添加成功
添加成功后在C:\Users\Administrator\.ssh\目录下会有三个文件

id_rsa
id_rsa.pub
known_hosts

需要注意的是在 ssh add 之前执行一条 ssh-add -D 命令,这是用来清除已有的私钥。

2.测试ssh key

ssh -T git@192.168.31.1

说明:
1.命令 ssh -T git@192.168.31.1 中,@后面替换成git服务器的ip地址。

提示 Welcome to GitLab, @xxx! 说明加入ssh成功。@后面的xxx为git用户名。

就是免密push/pull代码了。

遇到的问题

1.windows下git pull/push提示输入密码,git@192.168.31.1's password:Permission denied, please try again.
原因:SSH密钥对不匹配。这个错误主要密匙全路径名不相符,结果导致本地的SSH工具无法找到到正确的密匙。
解决:首先检查生成的两个文件id_rsa和id_rsa.pub是否确实在~/.ssh路径下,如过不是,把它们移过去。
其次是非常重要的一点,如果你在步骤2中自定义了ssh key的文件名,那么原因就在于你的命名与ssh内设定的名字不一致,因此需要手动添加秘钥。很多教程大概不是windows系统。。直接让输入命令

ssh-add ~/.ssh/你的文件名

其他常用操作

1.在git bash输入remote -v查看当前的remote url

git remote -v

若得到的连接是以http/https开头的,是http/https协议,git开头的是git协议

2.git从http/https协议替换成git协议

git remote set-url origin git@192.168.31.1:8099/test.git

done!

作者:zqifa

出处:https://www.l1mn.com

原文地址:https://www.l1mn.com/p/db3qs2.html

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

分类:git
标签:git

Copyright © zqifa 联系方式:z___qf@163.com