本机配置SSH连接代码仓库

一、创建SSH

  1. 查看是否之前有过ssh,在终端输入。
bash 复制代码
cd ~/.ssh

如果显示No such file or directory ,表示之前没有创建过ssh,直接进入下一步;如果可以直接进入需要先清理rss,终端执行命令:

bash 复制代码
mkdir key_backup $ cp id_rsa* key_backup $ rm id_rsa*
  1. 输入自己的github邮箱账号创建

在终端输入(邮箱账号替换为自己的Github登录邮箱)

bash 复制代码
ssh-keygen -t rsa -C "XXXXXXXX@163.com"

可以一路回车,在默认地址创建

二、在github上进行连接

  1. 打开github,点击settings,然后点击SSH and GPG keys

  2. 点击New SSH key

  3. 在终端中输入如下指令进入.ssh文件夹

bash 复制代码
cd ~/.ssh/

然后输入如下指令查看所有的文件

bash 复制代码
ls

然后输入如下指令打开rsa.pub

bash 复制代码
cat id_rsa.pub

然后将显示出来的内容都黏贴到github中的key部分

  1. 输入如下命令判断是否成功
bash 复制代码
ssh -T git@github.com

出现这个就算成功"You`ve successfully authenticated"

用 SSH 方式推送 HTTP 形式的 github 链接可能会报错,尝试编辑 ~/.ssh/config 文件(没有就新增),windows/mac 在用户目录下的.ssh目录,添加如下内容:

bash 复制代码
Host github.com
    HostName ssh.github.com
    User git
    Port 443
  1. 利用git config 里设置github 登录名以及登陆邮箱,执行以下两个命令:
bash 复制代码
git config --global user.name "your name" 
 
git config --global user.email "your_email@youremail.com"
  1. 执行如下指令上传你的本地文件夹
bash 复制代码
cd /Users/Tush/Documents/test
git init
git add .
git commit -m 'first commit'
git remote add origin https://github.com/XXX/XXX.git
git push -u origin master

上一步最后一个指令也要注意是 "git push -u origin master" 还是 "git push -u origin main"。

三、多个 SSH keys 的配置,方便 Git 对不同仓库的使用与管理

在搬砖的过程中,或多或少都会与不同的代码托管平台打交道。比如我就喜欢用 gitee(码云) 作为 md 笔记中的图床,github 作为个人项目的代码管理仓库。而公司又会使用其它的托管平台来管理,比如阿里云等。

单个 SSH keys 在使用并生效后,再配置其它平台就会造成失效等各种问题。看了各个仓库的 SSH keys 生成教程,基本只有单个 SSH keys 的生成。在我们想要对多个代码托管平台上的项目同时操作的时候,帮助不大。

在配置多个 SSH keys 的过程中,我把配置的过程与碰见的一些问题,记录在该文章内,希望能给各位提供些许帮助。

1. 生成各平台指定的 SSH-Keys

打开 git Bash Here,输入命令,修改邮箱后一路回车。如需要设置密码的话可以额外自行配置。

-t : "是指定秘钥的类型"

-C :"是指定用于识别密钥的注释,即可以填写任意值,一般都填邮箱"

bash 复制代码
// 先生成一个默认的 id_rsa,不生成可能会导致别名的配置 keys 不生效

$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa

// 再依次指定别名,生成其他给平台用的 ssh_key 文件

$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/github_rsa
$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/gitee_rsa
$ ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/aliyun_rsa

此时,系统盘用户名下的用户 .ssh 目录下应该有 8 个文件:id_rsa 和 id_rsa.pub,github_rsa 和 github_rsa.pub,gitee_rsa 和 gitee_rsa.pub,aliyun_rsa 和 aliyun_rsa.pub。

可能会出现的错误:

  1. 生成的公钥文件(.pub)未在 .ssh 文件夹内,或者生成文件的位置不对,请检查控制台当下的路径与生成的路径。

  2. 有些控制台可能识别不了 " ~ " , 修改添加的路径直接用 " ./ " 操作

2. 配置公钥

将它们的公钥文件(.pub)内部的所有内容复制黏贴到对应的代码托管仓库上。

以 github 为例,如图所示:

将对应平台的公钥添加至 Key 框内。Title 可随意填,具有标识性即可。

最后点击 Add SSH key 保存即可。

3. 配置私钥

bash 复制代码
// 先执行命令:

ssh-agent bash

// 再添加私钥

$ ssh-add ~/.ssh/github_rsa 
$ ssh-add ~/.ssh/gitee_rsa
$ ssh-add ~/.ssh/aliyun_rsa

// 添加成功如下图所示。

ssh-add 一些命令参数如下:

-D:删除 ssh-agent 中的所有密钥.
-d:从 ssh-agent 中的删除密钥
-L:显示 ssh-agent 中的公钥
-l:显示 ssh-agent 中的私钥

添加私钥,并通过命令 ssh-add -l 来查看当前配置成功的私钥列表,如图中所示:

bash 复制代码
ssh-add -l

可能会出现的错误:

  1. ssh-agent bash 提示错误信息:unable to start ssh-agent service, error :1058

解决:管理员权限打开 Power Shell,执行:

Set-Service -Name ssh-agent -StartupType automatic
  1. 添加私钥提示错误信息:No such file or directory

解决:检查当前控制台路径与添加的路径是否匹配,调整路径即可,如上图所示。

4. 新增 config 配置文件

若系统盘用户名下的 .ssh 目录下无 config 文件,那么新建一个 config 文件。该文件没有文件后缀名,类型显示为文件,双击后可用记事本等打开进行编辑。

我的配置文件如下,可参考配置文件参数说明:

bash 复制代码
# 配置文件参数
# Host : 配置对应的的主机名和 ssh 文件(可以直接填写 ip 地址)
# HostName : 要登录主机的主机名(建议与 Host 一致)
# PreferredAuthentications :配置登录的验证方式(含密码可自行查询配置方式)
# IdentityFile : 指明上面 User 对应的配置路径
# User : 登录名(如 github 的 username)
# Port: 端口号(默认 22)

# github.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:/Users/tag_a12/.ssh/github_rsa
User your_email@example.com

# aliyun.com
Host code.aliyun.com
HostName code.aliyun.com
PreferredAuthentications publickey
IdentityFile C:/Users/tag_a12/.ssh/aliyun_rsa
User your_email@example.com

5. 测试 SSH 链接

bash 复制代码
// 命令语句

$ ssh -T git@[Host 配置名]

// 使用如下:

$ ssh -T git@github.com
$ ssh -T git@code.aliyun.com

成功提示:

Welcome to GIT,your name!

也可以直接进行项目的克隆或提交进行测试。我的建议是,在配置完成后,对各个平台都进行一次链接测试。

可能会出现的错误:

  1. 提交代码时,提示 Host key verification failed。

原因:若你的项目先克隆到了本地,再修改 SSH keys 后,在提交的时候由于公钥不一样了,所以无法登录。

解决:只需要进行一次链接测试便可解决。

以上就是多个 SSH-Keys 的配置过程,如果在配置过程中还发现有其它问题或者还有看不懂的地方,欢迎留言讨论。

相关推荐
Dola_Pan2 小时前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
wang_book2 小时前
Gitlab学习(007 gitlab项目操作)
java·运维·git·学习·spring·gitlab
prcyang2 小时前
Docker Compose
运维·docker·容器
脚踏实地的大梦想家3 小时前
【Docker】安装全流程与配置完整镜像源(可安装 nginx)
运维·docker·容器
城南云小白3 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
从心归零3 小时前
sshj使用代理连接服务器
java·服务器·sshj
咩咩大主教3 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用
羌俊恩3 小时前
视频服务器:GB28181网络视频协议
服务器·网络·音视频
Zww08913 小时前
docker部署个人网页导航
运维·docker·容器
Flying_Fish_roe3 小时前
linux-网络管理-网络配置
linux·网络·php