2017/12/19
昨天开始想把之前的简单记账号密码项目重新有规划的写一遍,并且按记录传上github。由于公司用的是gitLab与sourceTree结合使用管理代码。发现需要创建多个ssh,分别来管理gitLab和gitHub。问题就由此开始。
回想刚入职时,光配置git就花了不少时间,而且也一点都明白原理,完全就是百度出来,依葫芦画瓢的。通过这次动手也明白了不少要点(虽然主要还是百度搜的)。特别是接触到许多终端命令行。
首先是配置第一个ssh。
1、$ cd ~/.ssh //~表示home目录,.开头的是隐藏文件
2、$ ssh-keygen -t rsa -C"XXX@xxx.com" //ssh-keygen命令 ssh生成
3、路径默认回车,设置密码
4、finder 前往~/.ssh (或者 $ cat ~/.ssh/id_rsa.pub 打印出id_rsa.pub内容)
5、id_rsa(ssh密钥,存储在本地) id_rsa.pub(ssh公钥,添加在远程git配置中) //ssh密钥认证过程
6、在gitLab账号中添加ssh(id_rsa.pub全部内容)
7、ssh -vT git@github.com //测试成功 git@XXX XXX为git仓库url
配置第二个ssh
1、2、步骤相同
3、Enter file in which to save the key (/Users/XXX/.ssh/id_rsa): id_rsa_github 更改存储名id_rsa.myself,设置密码
4、在github中添加ssh (id_rsa_github.pub)
5、因为存在两个id_rsa,在.ssh中添加config文件管理
6、通过vim 创建config
添加内容:
# Default gitlab user(XXX@xxx.com)
Host 192.XXX.X.XX
HostName 192.XXX.X.XX
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# github user(XXX@126.com)
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
7、测试 $ ssh -T git@github.com
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
遗留问题:虽然按网上说的测试通过,但因为个人使用sourceTree工具管理代码,github的ssh推送仍为失败;是需要使用终端命令推送才能成功么?还是先去学习终端命令吧。
还有一个问题就是先前有看到存储第二份ssh密钥在 ~/.ssh/newfile中,然而在添加新文件路径后,终端存储结果显示为 no such file ???
第一次试着写,有不对的地方还望见谅指出。
附录:
Linux下ssh相关命令:ssh命令
主要内容参考网上git多个ssh生成管理,就不一一列举了。