前言:
通常情况,我们工作中会使用gitLab或者Tgit等远程库,我们学习的时候使用github会更多.可是一把SSH钥匙只能对应一个远程库(当然多对一的自找麻烦也不反对).有些小伙伴会选择用http或者https的方式去克隆,推送项目,但是使用SSH是多人协同开发的唯一手段,也是个人习惯的一种方式.最后补一句,路走的太过轻松,常常会忘记当初自己想成为的样子.
第一把SSH-key的配置
(该步教程其实很多,写的也很详细,以github为例,首先你要注册各网站的账号,还要有git工具啦)
- 在桌面打开Git Bash窗口运行
git bash
,然后输入以下命令,切换到本机的用户目录下面的.ssh
目录:
cd ~/.ssh
复制代码
- 如果提示
No such file or directory
,则表示之前没有配置过ssh公钥;如果没有提示相关错误消息,则表示之前配置过ssh 公钥 - 如果之前没有配置过ssh 公钥,则在
~/
目录中执行以下命令:
ssh-keygen -t rsa -C "[email protected]"
复制代码
其中需要指定一个邮箱,(该邮箱会出现在公钥的末尾,是到时候的项目author)执行命令之后,会有三次信息提示,直接输入三次回车即可在用户根目录中生成一个 .ssh
文件夹,下面存放着ssh key相关文件
如图所示:
(暂时还少一个文件,在第6步会出现该文件)- 在github,gitLab,Tgit相应的位置,找到SSH-key的配置位置,用记事本打开.ssh文件夹下的
id_rsa.pub
文件(公钥,没有pub的是私钥,私钥很重要,不能随意透漏出去),这个文件中存放的就是刚才生成的ssh-key;把文件中所有的字符串复制,粘贴到相应位置中保存即可. - 在Git Bash中运行以下两条配置命令,将用户名和Github注册邮箱配置为全局账户: (电脑设备配置过一次即可,其余时候可以省略不管,不影响)
$ git config --global user.name "your_username" #设置用户名
$ git config --global user.email "your_registered_github_Email" #设置邮箱地址(建议用注册giuhub的邮箱)
复制代码
- 运行以下命令,测试
ssh key
是否设置成功:
$ ssh -T [email protected] //github的检测
$ ssh -T [email protected] //gitlab的检测 其他的如T-git也类似,就是换个网址
复制代码
(Warning之后会生成第3步缺失的known_hosts文件)
(里面是一些远程库的域名和SSH钥匙信息)
- 这时候会提示
Are you sure you want to continue connecting (yes/no)?
,意思是#确认你是否继续连接,输入yes
并点击回车; - 如果生成ssh key的时候密码不为空,则会看到类似于这样的提示:
Enter passphrase for key '/c/Users/xxxx_000/.ssh/id_rsa':
,意思是#生成ssh kye是密码为空则无此项,若设置有密码则有此项且,输入生成ssh key时设置的密码即可; - 如果能看到类似于
Hi XXXX! You've successfully authenticated, but GitHub does not provide shell access.
这样的提示,则表示ssh key配置成功!(有的时候也不见得会如此显示,我在配置git时就报了一个莫名其妙的错误,什么0通道被占用,反正有问题google一下,去建一个远程仓库测试一下能否正常clone,push)
- 在本地建立仓库,通过SSH push到GitHub
- 在Github中创建一个新仓储
- 复制新仓储的ssh地址
- 创建本地项目,并在根目录中运行
git init
初始化 - 在项目根目录中使用
touch 带后缀的文件名
创建README.md和.gitignore文件 - 运行
git add .
- 运行
git commit -m "init git files"
- 运行
git remote add origin "粘贴复制test ssh key的ssh路径"
- 运行
git push -u origin master
(master是主分支的意思,有问题接着google)
第二把SSH-key的配置
(该步教程很多写的语焉不详,或者一些命令我根本就不明白,也是我困惑的地方,以T-git为例)
手法基本同第一把的配置,但是需要细致的了解一些东西.
- 再次输入该命令(此时需要注意路径必须是.ssh文件夹下,只有第一把默认钥匙才会不用在意路径):
ssh-keygen -t rsa -C "[email protected]" //换个邮箱,哪怕是假的
复制代码
此时出现命令:
(第1句不能再为空,否则会盖掉之前的钥匙,此处实际上是对钥匙命名,其余两步直接回车)如图所示:
- 在T-git的相应位置,如上次一般添加到相应的位置;
- 运行以下命令,测试T-git的ssh key是否设置成功:
$ ssh -T [email protected] //T-git的检测
//值得注意的是git.code.tencent.com是个人使用腾讯云(工蜂)的一个地址
// 而公司的话应该是[email protected]
//总而言之不清楚ssh地址的话,可以先去建个库看看,这个地址一定要和config文件
// 的域名对应
复制代码
(手法同上,此时known_hosts就会有两把钥匙的信息)
图示:
- (最最重要的一步,就是去修改配置文件,去配置两把钥匙与两个远程库的对应关系)
- 在 ~/.ssh 目录下新建一个config文件
touch config
复制代码
- 添加内容:
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# T-git
Host git.code.tencent.com
# 公司用常常为git.cloud.tencent.com
HostName git.code.tencent.com
# 公司用常常为git.cloud.tencent.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/T-git_rsa
复制代码
(注意Host名与钥匙名匹配正确即可,可参照known_hosts文件中的信息,更多把的钥匙也是如此)