ssh连接git

   当我们在提交代码时,需要做的第一件事,就是让我们可以连接到远程仓库服务器,也就是需要我们知道远程服务器地址、证明我们的身份,登录到远程服务器中。

   这其实就是一次ssh连接,那我来讲ssh吧。

   我们可以使用ssh user@hostname -p port进行ssh连接,然后输入密码。这里需要记住的有4个数据,他们是:远程服务器IP远程服务器SSH端口号用户名密码。下面让我们来逐一分析(顺序被打乱了):

  1. 远程服务器IP,可以通过修改C:\Windows\System32\drivers\etchost文件解决。这在本机 niginx 测试中比较常见,用一个好记的别名代替ip地址
  2. 用户名和密码,他们是一起的,用来鉴别用户身份。这个也很好解决,可以在本地生成公钥,私钥。在与远程服务器交互时,用私钥加密数据,远程服务器用公钥验证签名。
  3. 远程服务器端口号,一般是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

说在最后:

  1. .ssh文件夹、config文件可能没有,需要手动添加。
  2. 生成密钥的命令是ssh-keygen -t rsa -C "season.qd@qq.com"
  3. config文件中的user,在git中是没用的,git只关心密钥,密钥可以做到验证用户信息,所以用ssh -T测试时,不管user写的是啥,都会返回欢迎xxx,这个名字一般是账户名。
  4. 其实公钥还是有比中100E彩票还要小的几率,但是我们不能认为绝对不会发生。但是这远比使用密码安全,不是吗?

完工,撒花

参考:
ssh的用户配置文件config管理ssh会话

posted @ 2021-05-03 15:05  season-qd  阅读(344)  评论(0编辑  收藏  举报