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!