惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Vercel News
Vercel News
C
Check Point Blog
G
Google Developers Blog
博客园 - 司徒正美
量子位
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
A
About on SuperTechFans
美团技术团队
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
Jina AI
Jina AI
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
人人都是产品经理
人人都是产品经理
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Cloudflare Blog
U
Unit 42

膨胀自留地

使用CloudFlare标记管理功能优雅的使用谷歌分析 四天轻松版北京旅游攻略 Adsense税务居住地证明申请教程:如何申请中国税收居民身份证明以及Google Adsense更新新加坡税务信息教程 常见的 VPS 优化措施 HTML实现table表格移动端自动转为卡片样式 个人网站接入 Google 登录 如何从 GitHub 永久删除泄露的 .env 文件 Cloudflare设置www的域名跳转到不带www的域名 顶级iOS神器!全面解开App Store限制,AssPP Pro保姆级教程 BroadcastChannel将你的 Telegram Channel 转为微博客 Medama开源轻量级网站统计(分析)系统 白嫖一个网站监控面板:uptime-kuma 部署TraffMonetizer利用闲置VPS挂机赚钱 Counterscale-使用CloudflareWorkers部署的免费网站数据统计工具,界面类似umami 封装一个最简单的Axios,避免过度封装! 如何使用Cloudflare Email Routing创建域名邮箱免费发送邮件 使用Cron定时更新Hosts解决Gihub无法访问问题 容器化MariaDB/Mysql实现定时备份 JetBrains全家桶许可证服务器怎么找,JetBrains激活教程 图片加速接口:缓存图片,加速访问,解决防盗链 MySQL模糊查询再也不用like+%了,全文索引介绍及使用简介 为什么这么多人推荐你办理流量卡?流量卡怎么赚钱?怎么避坑? 借助Cloudflare Worker实现Google Analytics反代加速,规避广告屏蔽插件的拦截 etcd入门之在Centos上安装部署 Grafana在linux下安装和基本使用入门 Prometheus介绍、安装和基本功能快速入门 无需加速器,油猴插件解锁xbox云游戏 阿里云盘自动每日签到,无需部署,无需服务器 自定义VSCode终端主题样式 一行 CSS 代码实现响应式布局 – 使用 Grid 实现的响应式布局
Mac上Git多账户SSH配置
2023-12-08 · via 膨胀自留地

#编程技术 2023-12-08 14:01:00 | 全文 1444 字,阅读约需 3 分钟 | 加载中... 次浏览

👋 相关阅读


如果使用 http 协议,每次提交或拉取等与服务器交互时都要输入密码,感觉很麻烦。于是决定使用 SSH 协议,因为自己使用的是 github ,公司使用的是 gitlab,所以要用到多 git 账户的 SSH 配置。看了很多文档写的不是很详细,下面详细说一下重要步骤!(以下在 Mac 系统中进行测试)

一、检测已有 SSH

如果已经有,考虑到不是最新的,可以删除掉重新配置下。

1、打开终端,输入 ls -al ~/.ssh

wangtwothree@WangTwoThrees-Mac-mini-2 .ssh % ls -al ~/.ssh
total 56
drwxrwxrwx   9 wangtwothree  staff   288 Dec  3 21:59 .
drwxr-x---+ 86 wangtwothree  staff  2752 Dec  8 00:10 ..
-rw-r--r--   1 wangtwothree  staff   341 Sep 13 22:45 config
-rw-r--r--   1 wangtwothree  staff  2602 Sep 13 22:34 gitee_rd_rsa
-rw-r--r--   1 wangtwothree  staff   570 Sep 13 22:34 gitee_rd_rsa.pub
-rw-r--r--   1 wangtwothree  staff  2610 Sep 13 22:34 github_rd_rsa
-rw-r--r--   1 wangtwothree  staff   574 Sep 13 22:34 github_rd_rsa.pub
-rw-------   1 wangtwothree  staff   919 Dec  3 21:59 known_hosts
-rw-r--r--   1 wangtwothree  staff   183 Dec  3 21:53 known_hosts.old

2、检查目录列表,看看是否已经拥有公共 SSH 密钥。如果您没有现有的公钥和私钥对,则直接生成;有的话删除公钥和私钥对,重新生成。

二、生成一个新的 SSH 密钥

1、打开终端,输入 ssh-keygen -t ed25519 -C "your_email@example.com",不支持 Ed25519 算法的遗留系统则输入 ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

wangtwothree@WangTwoThrees-Mac-mini-2 .ssh % ssh-keygen -t ed25519 -C "xxx@qq.com"
Generating public/private ed25519 key pair.

2、看到上边这句话就已经开始生成,按照提示输入文件存储位置,一般在 /Users/xxx/.ssh/ 目录下。输入秘钥密码,输入后回车,也可直接回车跳过密码。

3、如果看到 The key's randomart image is: 说明秘钥已经生成成功。

三、将生成的秘钥添加到 ssh 代理中

1、在后台启动 ssh-agent,输入eval "$(ssh-agent -s)"

wangtwothree@WangTwoThrees-Mac-mini-2 .ssh % eval "$(ssh-agent -s)"
Agent pid 60218

2、配置多个 SSH 账户

在 macOS Sierra 10.12.2 以上需要修改~/.ssh/config文件。

输入vi ~/.ssh/config

3、config 文件添加内容。如果在生成密钥时输入了密码则将 IgnoreUnknown UseKeychain 替换为 UseKeychain yes

Host github.com
  AddKeysToAgent yes
  IgnoreUnknown UseKeychain
  IdentityFile ~/.ssh/rsa_github
  • Host:git 服务器域名
  • AddKeysToAgent:是否将秘钥添加到ssh代理中
  • IdentityFile:私钥文件名

4、将 SSH 私钥添加到 ssh 代理中,并将密码存储在钥匙串中。

输入 ssh-add -K ~/.ssh/rsa_gitlab

四、将秘钥的公钥添加到 github 等 git 服务器中

1、拷贝公钥文件里的内容,输入 pbcopy < ~/.ssh/rsa_gitlab.pub ,在账户设置 SSH 配置中添加拷贝的内容,标题可以设置为电脑型号或名称。

2、测试连接是否正常,如果不正常请按步骤排查。输入 ssh -T git@github.com。此时会让你输入yes或no是否继续连接,输入 yes 即可。如果看到以下输出就成功了。

Hi WangTwoThree! You've successfully authenticated, but GitHub does not provide shell access.

gitlab 私有 git

Warning: Permanently added '36.99.**.**' (ECDSA) to the list of known hosts.
Welcome to GitLab, WangTwoThree!

最终 config 文件内容为:

Host github.com
  AddKeysToAgent yes
  IgnoreUnknown UseKeychain
  IdentityFile ~/.ssh/rsa_github

Host 36.99.**.**
  AddKeysToAgent yes
  # Port 8888
  IgnoreUnknown UseKeychain
  IdentityFile ~/.ssh/rsa_gitlab

常见问题

设置了 git 密钥,为什么还需要输入用户名

如果你在使用 Git over SSH 时仍然需要输入用户名,可能有几个原因:

1、未使用 SSH URL:

确保你使用的是 SSH URL 而不是 HTTPS URL。

SSH URL 通常以 git@hostname:username/repo.git 的形式呈现。

如果使用 HTTPS URL,即使设置了 SSH 密钥,系统也可能要求输入用户名和密码。

你可以通过以下命令检查远程 URL:

git remote -v

如果显示的是 HTTPS URL,你可以使用以下命令切换为 SSH URL:

git remote set-url origin git@hostname:username/repo.git

其中,hostname 是远程 Git 服务器的主机名,username 是你的用户名,repo.git 是仓库的名称。

2、SSH 配置问题: 检查你的 SSH 配置。

~/.ssh/config 文件中,确保没有配置项覆盖了用户名。如果存在这样的配置项,请删除或修改为正确的用户名。

3、SSH 密钥关联问题:

确保你的 SSH 密钥正确关联到 Git 服务商的帐户。在 GitHub 或其他 Git 服务商的用户设置中,查看是否添加了正确的 SSH 公钥。

4、缓存凭据问题:

如果之前使用了用户名和密码进行 HTTPS 认证,Git 可能仍然记住了这些凭据。你可以清除 Git 的凭据缓存:

git credential-cache exit

或者,你可以使用以下命令清除全局的 Git 凭据:

git credential-cache exit

确保上述步骤中的每一项都正确设置,然后尝试再次进行 Git 操作。

VIA


×