为什么要配置SSH?
作为程序猿,Git 应该是目前主流的代码管理工具,而Git在提交时有两种方式:Https 和 SH 两种验证方式。
- Https : 输入账号密码,每次都要输入(麻烦,程序猿从来不做重复工作)
- SSH : 提交代码时通过GIT服务器的公钥与本地私钥做验证。(配置一次,无须每次输入账号密码)
SSH(简单原理说明)
生成一对公钥-私钥,公钥添加到Git服务器,私钥放在本地。提交代码时通过GIT服务器的公钥与本地私钥做验证,如果验证通过则提交成功,简单说就是把账号和密码托管给SSH, 账号就像我们的QQ号码,是公开的可见的,密码只有我们自己知道,本地私钥就是代码我们输入密码的过程,切安全。
1.1 打开命令行(终端),测试终端是否支持SSH
ssh -V
如果支持,可能看到类似以下版本信息:
OpenSSH_7.4p1, LibreSSL 2.5.0
测试如果不识别SSH,则需要另行安装,Mac默认带有ssh,不需要安装
1.2 生成公钥私钥
用命令行进入存放ssh的文件夹,然后输入指令,引号内输入你Git的的邮箱地址
cd ~/.ssh
ssh-keygen -t rsa -C "aoaoyi.com@gmail.com"
接下来会提示,先输入key的名称路径,接着输入密码及确认密码:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yuzhenbei/.ssh/id_rsa): aoaoyi.com
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in aoaoyi.com.
Your public key has been saved in aoaoyi.com.pub.
The key fingerprint is:
SHA256:G22aOaq2+Mrki0fJUx3Gro6kOMAXKLxJvcbWwnPXXPg aoaoyi.com@gmail.com
The key's randomart image is:
+---[RSA 2048]----+
| . |
| + |
|. o + . . |
|.+ o. o o . |
|+.=o+. S = |
|.+*X.o . X E |
|o+=++ . * |
|+=o.o . . |
|.o*=+o. |
+----[SHA256]-----+
此时在终端输入ls,则会看到当前目录已经有了我们生成好的公钥私钥文件aoaoyi.com aoaoyi.com.pub, .pub文件即是公钥
ls
aoaoyi.com aoaoyi.com.pub
因为一般自己笔记本维护自己的github, 公司电脑维护公司的git, 所以先介绍单个git账号配置
2.1 将生成的SSH-KEY分别配置给服务器和本地。
- 将第一步生成的xxx.pub 公钥中的内容添加到git的SSH中,即在网页上GitHub或Gitlib的设置(setting)中可以找到ssh这个菜单项。
- 把SSH-KEY配置给SSH,让系统SSH知道这个KEY,如果你是在其他文件夹中生成的密钥对必须 拷贝到~/.ssh文件夹 中,然后输入如下指令,将当前rsa私钥(不带.pub文件) 添加到SSH-Agent.
ssh-add rsa文件的路径/xxx_rsa
输入后会校验之前我们在上面 1.2 步骤中设置的密钥密码,校验成功后会提示
Identity added: xxx_rsa (xxx_rsa)
如果设置失败,首先检查当前目录是否为 **~/.ssh**, 然后如果提示如下,请执行`eval $(ssh-agent)` 后再重新添加,如果还不行,请执行`ssh-agent bash`再次尝试添加,如果还有问题请另行查阅,本文主要介绍配置多个ssh.
如果出现
Could not open a connection to your authentication agent
的错误,就试着用以下命令:ssh-agent bash
ssh-add rsa文件的路径/xxx_rsa
2.2 配置Git全局用户和邮箱:(邮箱为你git对应的邮箱)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
配置完成后可打开 ~/.gitconfig查看配置
vi ./gitconfig
内容大致如下
[user]
name = xxx
email = xxx@gmail.com
大部分人使用Git一般是一个账号, 所以步骤2中可以完成,但是如果你考虑到以后可能维护多个,或者像本人想在公司电脑里使用公司邮箱的gitlab与自己的github一起,这时就需要配置多个私钥对。
1). 上面配置ssh密钥对 1.2 时提到起名防止冲突,所以这里不再介绍,反正原则就是一个账号对应一对密钥(xx, xx.pub).
2). 接下来服务器添加公钥步骤同2.1中添加公钥的步骤,第二部为SSH配置私钥位置时和上面方法不同,我们需要在**.ssh**文件夹中新建一个config的文件(名字可以自己取,但是不要有冲突和当前目录下),
touch config
,然后通过指令vim config
进入config文件,键盘敲击小写字母a进入编辑模式,输入如下内容:Host gitlib.com
HostName gitlib.com
User xxx@gmail.com
PreferredAuthentications publickey
IdentityFile id_rsa_gitlib
Host oschina.com
HostName aoaoyi.com
User xxx@foxmail.com
PreferredAuthentications publickey
IdentityFile /D/Workspace/ssh/id_rsa_aoaoyi
Host 10.33.1.235
HostName 10.33.1.235
User xxx@foxmail.com
PreferredAuthentications publickey
IdentityFile /D/Workspace/ssh/id_rsa_aoaoyi
对配置信息的解释
#Host myhost(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost)[注意下面有缩进]
#User 登录用户名(如:git)
#HostName 主机名可用ip也可以是域名(如:github.com或者bitbucket.org)
#Port 服务器open-ssh端口(默认:22,默认时一般不写此行
#PreferredAuthentications publickey
#IdentityFile 证书文件路径(如~/.ssh/id_rsa_*)
注意:
- HostName是服务器的地址,User是用户名,PreferredAuthentications照抄即可,这里主要说的是IdentityFile,上面我们看到了三种情况,所以它的书写原则是:
- 填私钥文件的本地路径。
- 不论是Linux还是Windows都可以写相对路径,比如把id_rsa_xxx私钥文件放在.ssh文件夹下。
- 文件放在不同跟路径下时,需要写绝对路径
- HostName 不可带http或https开头
3). 将所有的id_rsa私钥文件添加到SSH-Agent
4). 最后,配置局部邮箱 在上面步骤我们配置了全局的邮箱即如果是通过该邮箱的项目ssh的配对已经完成,如果是其他账户的项目则需要进入该仓库文件夹后配置,配置命令如下:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
配置成功后,我们可以进入项目文件夹下的.git文件夹查看config文件内容,大概内容如下:
[user]
name = xxx
email = xxx@gmail.com
此时配置全部结束,请查看下方测试SSH-KEY配置是否成功进行测试。如果配置成功,你就可以clone和commit了。
- 如果你是Github:
$ ssh -T git@github.com
- 如果你是Gitlib:
$ ssh -T git@gitlib.com
- 如果你是局域网10.12.22.201
$ ssh -T git@10.12.22.201
- 其他自行递归解决
$ ssh-add rsa私钥文件的路径
你也可以打开终端->shell->新建远程连接
文章评论