当前位置:   article > 正文

Git-多账户配置SSH免密登录_gitlab 多ssh config

gitlab 多ssh config

前言

问:为什么要配置SSH?
答:因为每次同步远程代码都需要输入密码,使人低效又烦躁。
在这里插入图片描述
另外,Github 不配置 ssh ,会有大文件限制,如果超过一定大小,会出现错误error54,就像这样:
Git error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

所以,不要磨炼自己的耐心了,也为了方便,麻利地配起来~

单账户配置

第一步:生成ssh 密钥

命令如下所示:

ssh-keygen -t rsa -C "youremail@example.com"  // 替换成你自己的邮箱
  • 1

执行命令时会让你输入名称和密码,名称如果不输入,默认是id_isa。如果只配一个账户,默认即可,如果需要多个Git 账户都要配置ssh,最好起个名字,建议使用平台名称,方便区分。
在这里插入图片描述
执行成功后果~/.ssh 会生成两个文件,分别私钥(xxx.pub)和密钥。下图有两对文件,github/github.pub 是自定义名称的一对,id_rsa 和 id_rsa.pub 是一对。
在这里插入图片描述
这里需要说明一下,因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中,命令是:

ssh-add  <your-id_rsa-path>
  • 1

下图可以明显看到 id_rsa 默认已经添加,自定义的名称需要输入密码。
在这里插入图片描述

第二步:远程git 配置 ssh 公钥

这一步需要获取公钥的内容,然后粘贴到远程 Git ,例如 github 和 gitLab

获取公钥内容,命令如下所示:

cat ~/.ssh/id_rsa.pub
  • 1

在这里插入图片描述

以 github 为例,添加 ssh 配置的入口在 Setting-SSH and GPG keys ,将上一步的内容粘贴,并自定义名称即可。按照我的经验,如果有多台电脑,名称最好标识下电脑,方便区分,例如xx_work,xxx_personal 等等
在这里插入图片描述

第三步:测试是否配置成功

命令为:

// 如果你是链接其他的服务器地址,将后面的 github.com 替换一下
ssh -T git@github.com

  • 1
  • 2
  • 3

在这里插入图片描述

多账户配置

问:为什么要有多账户配置?
答:因为在实际的工作学习场景中,公司的远程代码仓库大多是自己搭建的,例如我司就是gitLab,需要配置一个ssh,个人学习代码仓库在gitHub,也要配置一个SSH,所以必须要配置俩了。

配置步骤如下:

  1. 第一步:生成ssh 密钥时,多对密钥,要取不同的名字,用来区分(例如我比较喜欢用平台命名,命名为github 和 gitlab)
  2. 第二步:远程git 配置 ssh 公钥,各自配置各自平台。
  3. 第三步:配置SSH Config 文件。这个下面详细讲。
  4. 第四步:将两个密钥加入钥匙串,然后分别测试是否配置成功

基本步骤和单账户基本一致,关键步骤在配置 SSH Config 文件,下面针对该点展开。

配置 SSH config 文件

问:SSH config 是什么?
答:SSH config 是 Linux 系统下针对 SSH 客户端的一个参数配置方案,可以将一些关于 SSH 命令的参数放到配置文件中去,执行 SSh 命令的时候从文件中读取,简化命令行的操作

SSH 的配置文件有两个:

  • 用户配置文件:~/.ssh/config
  • 系统配置文件::/etc/ssh/ssh_config

我们配置的时候,只需要关注用户配置文件~/.ssh/config即可。

进入~/.ssh/目录,查看是否有 config 文件,有可直接修改,没有就手动创建。结合第一步创建的两个密钥,现在~/.ssh/ 在的文件组成为:
在这里插入图片描述
config 中的文件配置如下内容:

# github
Host github.com
	HostName github.com
	User your_login_name
	IdentityFile ~/.ssh/github

# gitlab
Host gitlab.xxx.com
	HostName gitlab.xxx.com
	User your_login_name
	IdentityFile ~/.ssh/gitlab
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

配置项说明:

  • Host : HostName 的关键词,用于我们执行 SSH 命令的时候如何匹配到该配置,相当于一个别名,可以自己起,一般用来简化 HostName 。这里和 HostName 一致,是因为我没这个简化需求,再加上了解不深,保持一致,避免多事。
  • HostName :真正连接的服务器地址,可以是IP,也可以是具体的域名
  • User:用户名,可以自定义,提交的时候用户名会采用该用户名
  • IdentityFile:指定本次连接使用的密钥文件

配置完成后,使用以下命令测试连接即可。

# 添加密钥到本地钥匙串
ssh-add  <your-id_rsa-path>
# 测试连接
ssh -T git@github.com
  • 1
  • 2
  • 3
  • 4

MAC 重启后 SSH 失效问题解决

使用过程中,发现重启电脑后,竟然需要重新输入密码,小朋友有很多小问号,Why?

网上冲浪查询一番后,得知原因是从macOS Sierra 10.12.2以后,SSH的配置内容更新了,默认不会主动添加SSH密钥到钥匙串中,也不会主动从 ssh-agent 加载密钥, (想详细了解的,指路官方变更文档

我看了下自己的电脑配置已经是 10.14.5 了,原来如此,这样就破案了。

官网也针对修改,提供了两个配置项AddKeysToAgentUseKeychain,可以在 config 文件中配置为 yes:


# github
Host github.com
	HostName github.com
	User your_login_name
	IdentityFile ~/.ssh/github
	# 加载到 ssh-agent 
    AddKeysToAgent yes
    # 添加到用户钥匙串
    UseKeychain yes

# gitlab
Host gitlab.xxx.com
	HostName gitlab.xxx.com
	User your_login_name
	IdentityFile ~/.ssh/gitlab
	# 加载到 ssh-agent 
    AddKeysToAgent yes
    # 添加到用户钥匙串
    UseKeychain yes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

参考链接

Git常见错误整理
SSH Config 那些你所知道和不知道的事
Mac OS Sierra SSH密钥在重启后丢失的问题


欢迎关注个人微信公众号「浅浅同学的开发笔记」,最新的博客,好玩的事情,都会在上面分享,期待与你共同成长。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/551478
推荐阅读
相关标签
  

闽ICP备14008679号