【多个ssh连接github】 您所在的位置:网站首页 网络安全考研院校 【多个ssh连接github】

【多个ssh连接github】

2023-06-06 13:51| 来源: 网络整理| 查看: 265

ssh密钥配置多账户的github ssh是什么ssh生成密钥代码密钥 自定义的文件配置密钥文件配置多账号push问题

ssh是什么

SSH 全称为:Secure Shell,是一种加密的网络传输协议,通过在网络中创建安全隧道来实现客户端与服务器之间的连接。SSH 在 数据传输 时基本上都采用对称加密方式,但是在进行 身份验证 时却需要采用非对称加密的形式,也就是 公钥—私钥对 的形式。

密钥对:在非对称加密技术中,有两种密钥,分为公钥和私钥。公钥是密钥对所有者持有,公布给他人的;私钥也是密钥对所有者持有,不可公布。 公钥:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。 私钥:如上,用来解密公钥加密的数据。 公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。公钥和私钥是成对的,它们互相解密(密钥指公钥或私钥,密钥对指公钥加私钥)。公钥和私钥都可以加密和解密。 使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

密钥分为两种: 对称密钥 与 非对称密钥: 对称密钥加密,又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

非对称密钥加密系统,又称公钥密钥加密。 它需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 所以在实际的应用中,人们通常将两者结合在一起使用,例如,对称密钥加密系统用于存储大量数据信息,而公开密钥加密系统则用于加密密钥。 /密钥指的是私钥或者公钥—>密钥=私钥/公钥;密钥对,针对的是非对称加密—>密钥对=私钥+公钥。这样的话,整个思路就清晰了/

SSH 生成密钥对时可以使用多种加密算法,这些加密算法生成的最常用的密钥类型是 rsa 和 ed25519。 rsa:最常用的公钥加密算法,使用极其广泛,并且支持较好。密钥位数越多,安全性越好,但是性能会有所降低,常见的有 RSA 2048 和 RSA 4096 等。 ed25519:椭圆曲线算法生成的密钥,密钥长度短,安全可靠并且具有高性能。它的安全性在 RSA 2048 与 RSA 4096 之间,但是性能却在数十倍以上。

ssh生成密钥代码

打开C:\Users\ZC,其中ZC是本人用户明;在该文件下打开GIT bash here。输入: 下面展示一些 内联代码片。

# 生成 RSA 2048 密钥 | $ ssh-keygen -t rsa -b 2048 -C "[email protected]" | #生成 RSA 4096 密钥 $ ssh-keygen -t rsa -b 4096 -C "[email protected]" # 生成 ed25519 密钥 $ ssh-keygen -t ed25519 -C "[email protected]"

-t:选择生成密钥的类型 -b:设置密钥位数 -C:密钥注释,这里要改为你自己的邮箱地址

以生成密钥rsa 为例,执行以上命令后,会提示你设置密钥存储路径,按 Enter 默认即可(可自定义文件存储路径如 /c/Users/.ssh/zc-impro 否则默认是/c/Users/.ssh/id_rsa)。 然后会提示你设置密码,根据需要自行选择设不设置(不设置按 Enter 即可,已经非对称加密过,不设置也问题不大;设置的话安全性会提高,但是每次连接时需要输入密码,会麻烦一点)。

权限设置

在 Linux 中,还需要设置私钥文件的权限才可使用:

$ chmod 600 ~/.ssh/id\_ed25519 密钥 自定义的文件配置

当需要配置多个ssh密钥时,为了方便管理,肯定需要对创建的密钥文件进行修改,比如上文将默认的存储文件/c/Users/.ssh/id_rsa修改为/c/Users/.ssh/zc-impro。因此,当修改后,需要修改配置文件才能正确匹配。 首先,先来验证下,在不配置config情况下的匹配效果。 第一步:获取公钥:

$ cat zc-impro.pub

第二步:在 Github 或其他 Git 服务器新建 SSH Key 在 Github 个人的设置页,点击 “New SSH Key” 。取个名字,把上一步获取到的 SSH Key 拷贝进去。 第三步:匹配代码:

$ ssh -T [email protected]

在这里插入图片描述

密钥文件配置

从上面可以看到连接失败。因此需要配置连接的条件: 首先在.ssh中创建config文件,并使用vim打开config文件进行编辑

# 新建 config 文件 $ touch config # 用 vim 编辑器打开 config 文件 $ vim config

在 config 文件 中,添加如下内容:

# zc-improving@github Host zc-impro_github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/zc-impro # 如果生成多个 SSH-Key , 则按上面的格式继续往下写

在这里插入发堆叠堆叠图片描述 其中,Host 是实际的主机名,当没有 HostName;Host是主机的昵称,HostName是实际的主机名。Host 和 HostName 填写 Git 服务器的域名,IdentityFile 指定私钥的路径(在生成 SSH-Key 时,我们已经指定该路径,拷贝确定的密钥文件过来即可)。 可参考:

| | # ------------ 配置说明(始) ------------ | | | | | | # Host:别名,HostName:服务器域名或 IP 地址 | | | # User:用户名 | | | # 例:在 git clone [email protected]:torvalds/linux.git 中 | | | # User 是 git,Host 是 github.com | | | # IdentityFile:私钥路径 | | | | | | # ------------ 配置说明(末) ------------ | | | | | | | | | # ------------ 具体配置(始) ------------ | | | | | | # GitHub 密钥 | | | Host github.com | | | HostName github.com | | | User git | | | PreferredAuthentications publickey | | | IdentityFile ~/.ssh/github\_ed25519 | | | |

接着按esc 退出编辑,shift+zz 保存并退出vim。重新输入测试连接:

$ ssh -T git@zc-imro_github.com

测试结果如下图,配置成功,就可以结束了。 在这里插入图片描述

多账号push问题

比如说,我有一个[email protected][email protected]两个github账号,同时也创建了zc-impro和zc-study分别与上面两个账号做了关联。两个账号都在同一台电脑,此时,使用两个进行push代码后,都是显示同一个账号的信息。如图所示:

在这里插入图片描述 在这里插入图片描述

可见,用两个密钥关联的账号提交的居然是一个人的信息。 通过多次实验后终于发现了奥秘: 因为在一开始我们设置了 全局的用户名称和全局用户邮箱:

$ git config --global user.name zc $ git config -global user.eamil 123.qq.com

在提交时,系统会根据邮箱去写明提交者的信息。如果邮箱是假的,则只会显示用户名称,点击名字后,并不会跳转到该用户的github下。 因此,当有多个账户,或者公司电脑交接,需要将以下信息进行修改:

$ git config --global user.name 自己的名字 $ git config -global user.eamil github邮箱 $ git config user.name 自己的名字 $ git config user.eamil github邮箱

其中,global是全局,当某一个仓库没有设置自己的user.name和user.email时,使用的就是全局信息。 当仓库下的config 有设置的user.name和user.email时,则使用当前信息。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有