网站首页 > 博客文章 正文
前言
在开发的过程中,经常会遇到这样的状况:需要在一台电脑上同时使用两个甚至多个 git 账号,负责不同的用途,比如:一个用来写个人项目,一个用来写公司的项目。为此我们需要为不同的账号生成不同的密钥,那对这些不同的账号和不同的密钥,我们该怎么处理呢?
SSH配置
取消全局设置的用户名和邮箱
$ git config --global --unset user.name
$ git config --global --unset user.email
生成私钥和公钥
cd ~/.ssh && mkdir -pv {github,company}
$ ssh-keygen -t rsa -C "youremail@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Administrator/.ssh/id_rsa):/Users/Administrator/.ssh/github/id_rsa_github
# 在回车提示中输入完整路径,如:/Users/Administrator/.ssh/github/id_rsa_github
#文件命名后,按2次回车,密码为空
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
$ ssh-keygen -t rsa -C "youremail@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/Administrator/.ssh/id_rsa):/Users/Administrator/.ssh/company/id_rsa_company
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
如果用户家目录中没有 .ssh 目录请自行创建 在这里我创建了两个目录 github 和 company ,分别用来存储不同项目的密钥,进行分类管理
New SSH key
- 把 ~/.ssh/github/id_rsa_github.pub 的内容添加到Github的SSH keys中
- 把 ~/.ssh/company/id_rsa_company.pub 的内容添加到公司Gitlab的SSH keys中
新密钥添加到SSH agent中
添加新密钥到SSH agent,因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:
$ ssh-add -K ~/.ssh/github/id_rsa_github
$ ssh-add -K ~/.ssh/company/id_rsa_company
如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:
$ ssh-agent bash
$ ssh-add -K ~/.ssh/github/id_rsa_github
使用 ssh-add -l 查看 ssh key 的设置
修改 config 文件
$ vim ~/.ssh/config
Host *
KexAlgorithms +diffie-hellman-group1-sha1
# default: myfirst
Host github.com
HostName github.com
User myfirst
PreferredAuthentications publickey
IdentityFile ~/.ssh/github/id_rsa_github1
# mysecond
Host mysecond.github.com
HostName github.com
User mysecond
PreferredAuthentications publickey
IdentityFile ~/.ssh/github/id_rsa_github2
Host company.com
HostName company.com
User company
PreferredAuthentications publickey
IdentityFile ~/.ssh/company/id_rsa_company
其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如:mysecond.github.com,那么原地址是:git@github.com:test/Mywork.git,替换后应该是:mysecond.github.com:test/Mywork.git.
测试连通性
$ ssh -T git@github.com
Hi youremail! You've successfully authenticated, but GitHub does not provide shell access.
项目测试
初始化项目a
$ cd ~/a
$ git init
$ echo "myfirst" > README.md
$ git add README.md
$ git config user.name "myfirst"
$ git config user.email "myfirst@gmail.com"
$ git remote add github git@github.com:myfirst/test.git
$ git push -u github master
Counting objects: 3, done.
Writing objects: 100% (3/3), 213 bytes | 213.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:myfirst/test.git
* [new branch] master -> master
Branch master set up to track remote branch master from github.
初始化项目b
$ cd ~/b
$ git init
$ echo "mysecond" > README.md
$ git add README.md
$ git config user.name "mysecond"
$ git config user.email "mysecond@gmail.com"
$ git remote add github git@mysecond.github.com:mysecond/test.git
$ git push -u github master
Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To mysecond.github.com:mysecond/test.git
* [new branch] master -> master
Branch master set up to track remote branch master from github.
猜你喜欢
- 2024-10-10 Nutch-Hadoop-MongoDB搭建分布式爬虫
- 2024-10-10 OpenSSH更新至8.0,修复存在35年的安全漏洞
- 2024-10-10 [python] 基于paramiko库操作远程服务器
- 2024-10-10 利用Zabbix监控系统SSH方式检测远程目标主机
- 2024-10-10 手工方式IPSec VPN配置保障单位与分支之间的数据安全
- 2024-10-10 SSH 简介:安全远程访问的利器(安全远程登录协议ssh)
- 2024-10-10 [ Laravel 5.6 文档 ] 快速入门 —— 重量级开发环境:Homestead
- 2024-10-10 快速上手:Docker环境下的WordPress安装全攻略
- 2024-10-10 阿里云服务器Centos7.3安装Git(阿里云服务器centos装桌面)
- 2024-10-10 如何使用ssh密钥登录远程服务器(如何使用ssh密钥登录远程服务器账号)
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)