ssh连接git
当我们在提交代码时,需要做的第一件事,就是让我们可以连接到远程仓库服务器,也就是需要我们知道远程服务器地址、证明我们的身份,登录到远程服务器中。
这其实就是一次ssh连接,那我来讲ssh吧。
我们可以使用ssh user@hostname -p port
进行ssh连接,然后输入密码。这里需要记住的有4个数据,他们是:远程服务器IP、远程服务器SSH端口号、用户名、密码。下面让我们来逐一分析(顺序被打乱了):
- 远程服务器IP,可以通过修改C:\Windows\System32\drivers\etc中host文件解决。这在本机 niginx 测试中比较常见,用一个好记的别名代替ip地址
- 用户名和密码,他们是一起的,用来鉴别用户身份。这个也很好解决,可以在本地生成公钥,私钥。在与远程服务器交互时,用私钥加密数据,远程服务器用公钥验证签名。
- 远程服务器端口号,一般是22,但是巧了,我们公司gitlab是一个自定义的,很难记住。
我们可以发现,记住4个数据很难,但是,一个服务器ssh端口号是固定的,一个账户的密码是固定的,那我们是否可以只记住2个数据,剩下的2个自动填入呢?
解决方案是有的,方案就在.ssh文件夹config文件中
config文件长什么样呢?我们来看一看
# gitlab
Host gitlab.xxx.net # 别名,相当于baidu.com
Hostname gitlab.xxx.net # 主机名/地址,可以是ip、域名
Port 33363 # 端口号
User season # 用户名
PreferredAuthentications publickey # 加密方式-公钥
IdentityFile C:\Users\season\.ssh\id_rsa_xxx # 加密文件
# gitee
Host gitee.com
Hostname gitee.com
User season-gitee
Port 22
PreferredAuthentications publickey
IdentityFile C:\Users\season\.ssh\id_rsa_gitee
一个config文件中,可以配置多条、使用#注释
config文件中,包含了:服务器地址+端口号、用户名+验证信息(密码之类),这样子就可以解决我们之前说的数据太多不容易记住、不方便管理的问题。
然后将我们的公钥配置到远程服务器中,ssh的相关操作就完成了,此时可以用ssh -T git@gitlab.xxx.net
进行测试
此时虽然测试成功,但是有一个问题,需要我们进行解决,那就是git中的用户名和密码还没进行配置。这很简单,配置一下就行。
分别配置用户名、密码。可以配置全局的,也可以根据项目配置。如果用户信息都是一样的话,配置全局的;如果不同的账户对应不同的用户信息,那就老老实实根据项目配置
// 当前用户
$ git config --global user.name season
$ git config --global user.email season.qd@qq.com
// 当前项目
$ git config user.name season
$ git config user.email season.qd@qq.com
说在最后:
- .ssh文件夹、config文件可能没有,需要手动添加。
- 生成密钥的命令是
ssh-keygen -t rsa -C "season.qd@qq.com"
。 - config文件中的user,在git中是没用的,git只关心密钥,密钥可以做到验证用户信息,所以用
ssh -T
测试时,不管user写的是啥,都会返回欢迎xxx,这个名字一般是账户名。 - 其实公钥还是有比中100E彩票还要小的几率,但是我们不能认为绝对不会发生。但是这远比使用密码安全,不是吗?
完工,撒花
梦想不多,口袋有糖,卡里有钱,未来有你