如何配置多个SSH-Key?

前言:

通常情况,我们工作中会使用gitLab或者Tgit等远程库,我们学习的时候使用github会更多.可是一把SSH钥匙只能对应一个远程库(当然多对一的自找麻烦也不反对).有些小伙伴会选择用http或者https的方式去克隆,推送项目,但是使用SSH是多人协同开发的唯一手段,也是个人习惯的一种方式.最后补一句,路走的太过轻松,常常会忘记当初自己想成为的样子.

第一把SSH-key的配置

(该步教程其实很多,写的也很详细,以github为例,首先你要注册各网站的账号,还要有git工具啦)

  1. 在桌面打开Git Bash窗口运行git bash,然后输入以下命令,切换到本机的用户目录下面的.ssh目录:
cd ~/.ssh
复制代码
  1. 如果提示No such file or directory,则表示之前没有配置过ssh公钥;如果没有提示相关错误消息,则表示之前配置过ssh 公钥
  2. 如果之前没有配置过ssh 公钥,则在~/目录中执行以下命令:
ssh-keygen -t rsa -C "[email protected]"
复制代码

其中需要指定一个邮箱,(该邮箱会出现在公钥的末尾,是到时候的项目author)执行命令之后,会有三次信息提示,直接输入三次回车即可在用户根目录中生成一个 .ssh文件夹,下面存放着ssh key相关文件

如图所示:

(暂时还少一个文件,在第6步会出现该文件)

  1. 在github,gitLab,Tgit相应的位置,找到SSH-key的配置位置,用记事本打开.ssh文件夹下的id_rsa.pub文件(公钥,没有pub的是私钥,私钥很重要,不能随意透漏出去),这个文件中存放的就是刚才生成的ssh-key;把文件中所有的字符串复制,粘贴到相应位置中保存即可.
  2. 在Git Bash中运行以下两条配置命令,将用户名和Github注册邮箱配置为全局账户: (电脑设备配置过一次即可,其余时候可以省略不管,不影响)
$ git config --global user.name "your_username"  #设置用户名

$ git config --global user.email "your_registered_github_Email"  #设置邮箱地址(建议用注册giuhub的邮箱)
复制代码
  1. 运行以下命令,测试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)
  1. 在本地建立仓库,通过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就会有两把钥匙的信息)

图示:

  • (最最重要的一步,就是去修改配置文件,去配置两把钥匙与两个远程库的对应关系)
  1. 在 ~/.ssh 目录下新建一个config文件
touch config
复制代码
  1. 添加内容:
# 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文件中的信息,更多把的钥匙也是如此)

你可能感兴趣的:(如何配置多个SSH-Key?)