MacOS系统里用SourceTree添加局域网Git仓库
最近公司给新项目配置了一个Git仓库来进行管理,其中也给产品团队开设了一个仓库路径来存放各种文档资料。对于Git仓库,以前自己也用过,不过一直都是使用的Github仓库,直接使用SourceTree软件来进行管理,配置过程还是比较简单的,网上也有不少教程。但是使用的是局域网环境下的Git仓库,管理员直接提供了仓库地址和每个人员的SSH秘钥。对于这种方式,以前在WIN系统下操作时还算简单,WIN版的SourceTree里带有SSH秘钥工具可以直接将发来的SSH秘钥添加进去,而Mac版的SourceTree则没有相应的功能。
在配置局域网Git仓库时,如果是直接添加仓库git地址是,SourceTree会提示「这是一个无效源路径/URL」,这个错误在clone一些线上git仓库时也可能会有提示,一般这种提示基本都是缺少相应的SSH私钥,所以需要在本地添加上这个私钥。查找了一些资料再结合自己配置github仓库时的经验,对这个ssh秘钥设置有了个大概的了解,最终将局域网git仓库配置成功。
首先通过添加github仓库来了解整个ssh秘钥流程,SourceTree添加github账户时可以直接通过OAuth方式添加,如果选择SSH协议时,此时界面上SSH秘钥一项会提示「未找到秘钥」。
这个时候直接点击创建秘钥,SourceTree就会在本地创建SSH秘钥,此时可以进入到/Users/youname/.ssh/
文件夹下查看,SourceTree已经生成了相应的公钥.pub
和私钥,还有config``known_host
两个文件。如果此时功能正常的话,SourceTree会立即将生成的公钥上传到github账户,如果上传失败可以直接复制相应的公钥然后到github账户中添加,这样就能clone自己github账号里的项目了。
配置了github账号后,整个ssh秘钥配置过程差不多就了解个大概了。在局域网使用git时,管理员发来的私钥也要通过这个类似过程来添加,公钥已经配置到服务器了。既然是私钥,所以需要直接将发来的key文件放到.ssh
文件夹里,文件名可以随意。因为一般添加的git仓库多了,.ssh
文件夹下一般会有好几个私钥文件,所以为了能让SourceTree正确选择相应的私钥文件,此时就需要对刚才生成的config
文件进行配置。打开刚才配置好github后的config
文件看看默认的格式。
# --- SourceTree Generated ---
Host xxxx-GitHub
HostName github.com
User xxxx
PreferredAuthentications publickey
IdentityFile /Users/xxxx/.ssh/xxxx-GitHub
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
看了这个config文件是通过指定相应host地址来使用对应的私钥文件,所以还需要看一下文件夹里的known_hosts
文件里是怎么配置的。
看来格式大概就是
域名,IP 加密方式 公钥
的格式,其实这个hosts文件并不需要特别修改,在操作添加git仓库时,提示无效源地址时会在里面添加上相应的host配置,我们只需要拿到域名就行了,这样就能开始进行配置了,可能部分信息还需要向git仓库管理员要。接下来就要开始配置config文件了,直接参考上面github的配置写就可以。
Host 名称 #可以填域名,方便自己识别
HostName git仓库域名
User 用户名
IdentityFile 私钥路径
PreferredAuthentications publickey
按照这样配置好config文件后,可以先尝试一下是否能够添加git仓库了,如果此时仍然提示无效源地址的话,就需要在终端里检测一下,输入以下命令看看仓库的地址有没有配置上对应的私钥key。
ssh -T git@github.com #对应git仓库地址
如果提示如下,就表示已经配置上了。
ssh -T git@github.com
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.
如果此时返回的结果是一个警告提示的话,则表示我们复制到.ssh
文件夹中的key权限上面有问题。
此时就需要我们对key文件的权限进行修改,修改之后就可以正常连接到git仓库了。
cd ~/.ssh
chmod 700 xxxx
网友评论