Git 如何成功配置SSH key连接多个代码平台?

简介: 本文为Git初学者详解SSH密钥配置,涵盖Windows、Mac、Linux平台,从安装Git到生成密钥、多平台管理及常见问题排查,手把手教学,助你轻松实现本地与GitHub等代码平台的安全连接,提升开发效率。

前言

很多开发者才刚接触 Git 的时候,看到各种命令和报错信息,经常一头雾水。即便是反复搜索和看文档,也很难快速定位分析问题并解决。

不同平台不同环境下,即便是同样的报错信息,解决办法也不尽相同,这给广大 Git 初学者带来了极大的困扰。

因此,我挑选出大家最常遇到的问题,给出了通用性的解决方案,以及常见报错信息的排查方式。

本文教程是在 Windows 平台下操作的,Mac OS X 和 Linux 平台操作大体相同。

前面的内容比较基础,有经验的开发者可选择性跳过,直接定位到【多平台的SSH配置】阅读。

如有需要补充或不准确的地方,欢迎大家在评论区指正。

准备工作

首先你要在本地安装 Git,最新版本可以在官网获取

下载前需要根据电脑系统版本,选择合适平台的 Git 版本。

我目前用的是 Windows 10 ,点击右侧按钮,下载 Windows 版本安装即可。

如果你的系统是 Mac OS X ,下载页面是这样的:

除了首页的推荐下载,也可以自行选择下载的版本,以及安装方式。

安装完成后,打开系统命令行工具(以 cmd 为例),输入 git --version 并回车,可以查看到当前 git 版本。

看到版本信息后,说明Git已经顺利安装,可以正常使用,接下来我们可以进行后续的操作了。

单平台的SSH配置

进入本地.ssh目录

打开命令行工具,输入命令:cd C:\Users\<你的用户名>\.ssh

进入SSH key文件存放目录。

这一步很关键,一定要先进入目录。

如果你是在其他路径下生成的,后续是无法注册成功的。

本地 Git 命令创建生成 SSH key

打开终端命令行工具,输入以下命令:

ssh-keygen -t rsa -C "youmaIl@mail.com"

其中"youmaIl@mail.com"部分,需要替换成自己的邮箱,回车后就能成功创建一个key。

创建设置SSH key 用户邮箱

接着是给key单独设置一个文件名,默认是 id_rsa,会保存在系统用户目录下的.ssh文件夹中。

设置SSH key文件名

如果直接回车,那么就会生成两个文件,分别是 id_rsa(私钥) 和 id_rsa.pub(公钥)。

这里我建议为Github平台设置单独的名称,如 id_rsa_github ,这样可以将SSH key跟平台一一对应,便于日后多平台 SSH key 的管理。

> 注意:ssh key的文件名只能是id_rsa_xxx的方式命名,否则在后续的连接过程中,代码平台会因为不识别,从而导致终端出现报错信息。

我这里起的名字是 id_rsa_github666 。

键入回车后出现这个提示,可以设置为空,直接回车就好

自定义SSH key 文件名称

这个步骤类似与网站注册时的设置密码和重复密码十分相似,设置两次密码,防止出错,这样就很好理解了。

重复输入密码

再次提示依旧是回车,选择为空。接下来就可以看到设置成功的提示

SSH key创建成功提示

完整的四个步骤是这样的,如下图所示:

创建ssh key的四个步骤

终端切换到 bash

接下来需要用到ssh相关的命令,由于系统自带的命令行是不支持的,因此我们需要切换到bash。

如果是mac用户,可以直接使用ssh-agent bash切换到bash环境。

Mac OS X 切换到 bash 环境

而Windows用户相对麻烦一些,需要在.ssh文件夹中的空白处右键,呼出右键菜单。

在指定文件夹中打开 Git Bash

紧接着点选【Git Bash Here】,启动 bash 命令行,可以看到已经在.ssh目录下了。

bash 进入 ~/.ssh目录

键入命令 ssh-agent 回车,发现没有提示,此时说明命令是生效了。

切换到 bash 环境

然后键入命令 ssh-add id_rsa_github666 (id_rsa_github666 是 SSH key文件名)

出现提示后,说明 SSH key 本地添加注册成功。

SSH key本地注册成功

连接到代码平台(以 Github 为例)

以 Github 为例,按照以下几个简单步骤,就可以轻松搞定本地Git与Github的连接。

浏览器访问Github官方网站:https://github.com/

输入账号密码登录。(没有的话需要提前注册一个)

Github 登录页面

登录成功后,点击右上角个人头像,点击 Settings ,进入设置页面。

Github 设置

创建 SSH keys

进入设置页面后,左侧栏选择【SSH and GPG keys】,进入SSH keys页面,可以看到历史创建过的SSH keys信息。

SSH keys列表

这里为了演示方便,我们点击右上角的【New SSH key】,进入创建页面。

Github 添加SSH key 页面

进入这个页面后,看到有 Title 和 Key 两个字段需要填写。

回到 .ssh 目录,用文本编辑器(如Visual Studio Code)的方式打开。

pub文件内容

全选内容后复制,粘贴到 Key 的文本框中,直接点击SSh Key即可。

粘贴.pub文件内容并新建

直接点击生成,结果就是把Title名称默认设置成了你的邮箱地址。

查看刚刚新建的SSH key

如果你想自定义设置 Title 名称做区分,也是可以的。

验证代码平台连通性

在 bash 环境下,键入 ssh -T git@github.com

回车后,可以看到连通成功的欢迎提示:

验证本地与 Github 的连通性

到这里,本地 Git 与 Github 代码平台就已经打通了,可以进行正常的代码推送、拉取等操作了。

多平台的SSH配置

对初学者来说,通常一个 Github 平台就足够了,但实际工作中,往往会面临多平台的问题。

比如公司内部有自己服务器搭建的Gitlab,还有一些其他的代码托管平台等等。

每个平台都需要连接,而平台对应的 SSH key又是唯一的。

在这样的情况下,就不可避免的需要多个 SSH key,用来连接不同的平台。

如果按照默认文件名的方式,直接回车创建,那么其他平台还是需要单独的去新建命名SSH key文件的。

因此只要按照上面【单平台的SSH配置】操作,一步步走下来,每个SSH key都是独一无二互不干扰的。

这样即便是有10个、100个类似的代码托管平台,仍然可以保证本机与各平台之间的连通性。

这里我给出完整的命令操作,以后可以直接存入笔记本,需要时随时调出来查阅使用:

代码语言:javascript


AI代码解释

cd C:\Users\<你的用户名>\.ssh  # 进入指定路径
ssh-keygen -t rsa -C "cooperx@foxmail.com" # 注册用户名邮箱
# 自定义设置用户名
# 两次回车确认密码
------------------------------------------------------------------------------------------
# 切换终端到bash环境(Windows下在.ssh目录右键打开git bash进入)
ssh-agent bash # 没有提示代表切换成功,这一步不可或缺
ssh-agent id_rsa_xxx # 添加注册ssh,提示 Indentity 为成功
-----------------------------------------------------------------------------------------
ssh -T git@xxxxxx.com # 测试代码平台连通性,注意T是大写

常见问题

为什么提示ssh key生成成功,但无法通过ssh-add添加注册?

这是由于之前ssh key生成的密钥文件不在 .ssh 目录下,命令行先进入到目录后,再重新操作一遍就好了。

出现信息 hosts "xxx" can't be established 是什么意思?

这个不是报错,而是第一次连接会出现的正常提示,一般回车就可以解决。

如果还是解决不了,那么可以在本地hosts文件中,加入一行ip地址和域名的映射关系。

例如:13.250.177.223 github.com

ip 地址可以在终端通过 ping github.com 来获取。

细心的你会发现,在.ssh文件夹下,会生成一个 know_hosts文件夹,在这里存放了代码托管平台的 host 信息。

known_hosts 文件

为什么输入ssh-agent bash命令,会出现unable to start ssh-agent报错?

这是终端环境问题,切换到 bash 环境下再输入就正常了。

总结

作为一名前端开发工程师,Git 在日常工作中必不可少。如果涉及到多端多平台的开发,或者是在公司代码仓库和个人代码仓库之间频繁切换,那么多平台的SSH key配置是必要的。本文虽然看起来操作略微复杂,但实际上手起来十分轻松,严格按照步骤走,关注几个细节点,操作下来也能得心应手,再也不用为多个代码平台连接而烦恼了。

如果你喜欢本文,可以在文章下方互动评论,你的支持是我创作的最大动力。

目录
相关文章
|
机器学习/深度学习 编解码 BI
RegNet架构复现--CVPR2020
在这项工作中,我们**提出了一种新的网络设计范式**。我们的目标是帮助促进对网络设计的理解,并发现跨环境通用的设计原则。我们不是专注于设计单个网络实例,而是设计参数化网络群体的网络设计空间。整个过程类似于经典的网络手动设计,但提升到了设计空间级别。使用我们的方法,我们探索了网络设计的结构方面,并**得出了一个由简单、规则的网络组成的低维设计空间,我们称之为** ==RegNet==。
2602 0
RegNet架构复现--CVPR2020
|
网络安全 开发工具 数据安全/隐私保护
解决 Enter passphrase for key ‘/Users/dzm/.ssh/id_rsa‘:
解决 Enter passphrase for key ‘/Users/dzm/.ssh/id_rsa‘:
4564 0
|
小程序 JavaScript
最新微信小程序反编译工具,完美解决分包问题
看了很多反编译、找回微信小程序源码很多教程,各种问题导致都没法正常使用。微信版本升级后,会遇到各种报错, 以及无法获取到wxss分包无法反编译的问题。于是寻找资料,也买过别人的破解工具,最终解决文件缺失和分包问题,而且无意中发现还能获取小游戏的源码,于是和大家分享下。
最新微信小程序反编译工具,完美解决分包问题
|
Linux 调度 数据安全/隐私保护
Qt之QFtp
简述 QFtp 类提供了一个 FTP 协议的客户端实现。 该类提供了一个到 FTP 的直接接口,允许对请求有更多的控制。但是,对于新的应用程序,建议使用 QNetworkAccessManager 和 QNetworkReply,因为这些类拥有一个更简单、还更强大的 API。 简述 QFtp 工作流程 基本使用 连接并登录 FTP 服务器 切换工作目录 列出目
7778 1
|
2月前
|
安全 网络安全 开发工具
解决 Host key verification failed 报错的三种方法(含 SSH 安全建议)
本文由喵喵侠撰写,详解Git提交时常见报错“Host key verification failed”的成因与解决方案。当SSH密钥变更或服务器重装系统时,本地记录的主机密钥会失效,导致连接被拒。文章提供三种解决方法:使用`ssh-keygen -R`删除旧密钥、手动编辑`known_hosts`文件,或临时禁用严格检查(不推荐生产环境)。同时强调安全建议:确认服务器状态、核对密钥指纹、启用`VerifyHostKeyDNS`防范中间人攻击。帮助开发者快速定位问题,保障代码提交顺畅。
813 0
|
2月前
|
自然语言处理 前端开发 Windows
推荐一款很好用的VSCode变量翻译插件
本文介绍VSCode插件“var-translate-en”,可一键将中文翻译为英文并转为小驼峰等命名格式,支持百度、腾讯、阿里等翻译服务。通过简单配置与快捷键设置,提升变量命名效率,解决命名难题。
709 0
|
JSON 前端开发 安全
【潜意识java】前后端跨域问题及解决方案
本文深入探讨了跨域问题及其解决方案。跨域是指浏览器出于安全考虑,限制从一个域加载的网页请求另一个域的资源。
3495 0
|
存储 Linux Docker
在Docker中,本地的镜像文件都存放在哪里?
在Docker中,本地的镜像文件都存放在哪里?
|
前端开发 Java
2022最新版JDK1.8的安装教程、包含jdk1.8的提取码(亲测可用)
这篇文章提供了详细的JDK 1.8的安装步骤,包括下载、安装向导、环境变量配置,以及如何检查安装是否成功的方法。
2022最新版JDK1.8的安装教程、包含jdk1.8的提取码(亲测可用)
|
缓存 网络安全 开发工具
Mac/Windows Git配置SSH和Git常用命令及iTerm2使用技巧
Mac/Windows Git配置SSH和Git常用命令及iTerm2使用技巧
713 0