背景:
工作中经常碰到需要多个ssh-key,比如一个是自己的,一个是公司的,甚至还有其他的,这种情况下就需要在本地配置相应多个ssh-key,并添加到代理中。 如图:
方法一
方法二:如下这些步骤
配置第二个的时候对于生成公钥和私钥的文件名就需要自定义了,否则就会覆盖上面的这两个默认文件名, 这里假设你已近生成了第一个公钥,现在想做的是配置第二个公钥并将其添加到ssh-agent中
一、配置本地自定义key的名字
1. cd 到本地.ssh目录下
cd .ssh
2. 生成一个ssh-key (后面填写的是你自己的邮箱账号)
ssh-keygen -t rsa -C "xxx@xxx.com"
3. 输入自定义key的文件名,我这里加的是id_rsa_gz,这个名字可以自定义,
4. 设置密码
Enter file in which to save the key (/Users/cyril/.ssh/id_rsa): id_rsa_gz
Enter passphrase (empty for no passphrase):
根据提示输入密码,这里输入的密码是需要记住的,每次通过ssh方式拉代码都需要输入该密码,可以和gitlab的密码一样,也可以直接两次回车,不输入密码。我这里习惯直接回车,跳过这个输密码的阶段
5. 成功生成ssh-key文件
将上述生成的自定义 ssh-key添加到ssh-agent
到这一步我们已经创建好了自定义的 ssh-key,此时还需要将新的 ssh-key 添加到ssh agent ,因为默认只读 id_rsa,首先可以通过命令查看一下已经添加进去的 ssh-key
6. 打开终端
ssh-add -l
7. 添加自定义key到ssh agent, id_rsa_gz是刚新生成的ssh-key
ssh-add -K ~/.ssh/id_rsa_gz
注意:这里的 -K 已经过时了,可以采用--apple-use-keychain代替,或者采用--apple-load-keychain,
添加成功之后可以查看一下是否把 id_rsa_gz 添加进去了 ssh-add ls
在这里补充说明一下,如果在上面只是运行下面(少了个 -K)
ssh-add ~/.ssh/id_rsa_gz
8. 电脑重启后还要让它有效【这一步暂时不需要了】
echo "ssh-add --apple-use-keychain ~/.ssh/id_rsa_xxx " >> ~/.bash_profile
查看
cat ~/.bash_profile
查看结果:
ssh-add -K ~/.ssh/id_rsa_xxx
二、配置config
如果自定义公私秘钥的文件名,需要告诉系统,每次拉取代码的时候,对于的域名需要找那一对公私秘钥
在.ssh文件夹下新建config文件(如果有的话就直接加,没有的话新建一个)
在config文件中添加域名和公私钥的信息
这命令相当于把对应的密钥加进 ssh-agent 所管理的一个 session 当中,这样每次关机重启之后ssh-agent 服务也就重置了,session 会话也就失效了。就需要重新再加一次。所以加个参数 -k是将密钥放在 keychain中,
这样就不会过期了,也可以打卡mac上的钥匙串访问,观察一些密钥的变化。
三、将本地的公钥添加到gitlab上去
这个比较简单,直接上图好了,如下:
至此,整个操作就结束了,现在已近可以通过ssh的方式去访问gitlab了。
四、额外扩展和shell脚本相关命令
1. vim命令
(1)进入命令
进入系统 .bash_profile文件:
sudo vim ~/.bash_profile
进入系统 .zshrc文件:
sudo vim ~/.zshrc
(2)退出命令
先摁esc键
保存退出:
:wq
保存不退出
:w
不保存退出(文件被修改过)
:q!
直接出退出(文件未被修改过)
:q
【更多解释】
总结步骤:
1、cd .ssh
2、ssh-keygen -t rsa -C "xxx@xxx.com"
3、ssh-add -l
4、ssh-add --apple-use-keychain ~/.ssh/id_rsa_xxx
5、echo "ssh-add --apple-use-keychain ~/.ssh/id_rsa_xxx " >> ~/.bash_profile
vim ~/.zshrc
echo "ssh-add --apple-use-keychain ~/.ssh/id_rsa_xxx " >> ~/.zshrc
6、复制id_rsa_xxx.pub里面的内容到gitlab中的ssh-agent中(在设置里面找)