最近的一个项目使用sourceTree管理git仓库,因为自动构建,不得不上传本地大文件(paasport文件190M),因此使用SSH协议,本地生成了SSH私钥和公钥,并且也将公钥上传了,如图:
然而当使用sourceTree 进行push的时候,遇到了"git@igit.****.com: Permission denied (publickey). fatal: 无法读取远程仓库"。并且将本地仓库删除,试图重新从远程仓库拉取项目的时候,在URL中输入项目的SSH地址后,sourceTree不断提示“这是一个无效的源路径 / URL” 。无奈之下使用命令行,手动输入SSH key密码后竟然可以push,但终究非完美解决方案(因可视化操作方便,命令行关于改动不能一目了然)。后经查阅资料,问题出在本地git仓库没有和SSH 私钥关联上
ssh-add " id-rsa 文件地址"
注意此处使用的是id-rsa SSH的私钥,而非id-rsa.pub.
添加之后,可以用
$ ssh git@igit.***.com
测试是否添加成功。
关于SSH的创建和配置步骤如下:
1、打开命令行,输入:
cd ~/.ssh
ls
查看用户主目录下是否有.ssh文件。
查看.ssh文件目录下是否有id-rsa 和 id-rsa.pub文件,若有,直接跳过第二步。
2、创建SSH key
$ ssh-keygen -t rsa -C "youremail@example.com"
将youremail@example.com替换为你自己的邮箱地址,然后回车,如果不想输入密码,点击三次回车就好了,如果想输入密码,遇到让你输入密码的地方,为你自己的SSH Key输入密码就好。
完成之后,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id-rsa是私钥,不能泄露出去,id-rsa.pub是公钥,可以放心地告诉任何人。
3、登录git托管地址,在里面setting中找到Add SSH Key,然后title任意填写,在key的文本框中填写id-rsa.pub中内容即可。
网友评论