同时使用Gitee(码云)和Github/Gitlab
<h1 id="一台电脑上同时使用gitee码云和githubgitlab">一台电脑上同时使用Gitee(码云)和Github/Gitlab</h1><h1 id="起因">起因:</h1>
<p> <strong>之前的博客是使用hexo+github pages部署,但是毕竟是国外的服务器,博客访问特别慢,于是想给github pages加个CDN,但是用了云服务器提供的CDN加速后还是时不时404,,突然联想到国内码云gitee也有gitee pages服务,于是想直接把博客迁移至gitee上,但遇到了一些问题。</strong></p>
<p> <strong>一般来说,在 Gitee 上和在 Github 上使用的账号邮箱应该是不一样的(回家换了电脑/重装系统),因此git需要重新配置一遍,仅此记录所踩过的坑。</strong></p>
<h1 id="如何在一台电脑上同时使用gitee码云和githubgitlab">如何在一台电脑上同时使用Gitee(码云)和Github/Gitlab?</h1>
<h2 id="答案ssh密钥">答案:ssh密钥</h2>
<h2 id="既可以同时连接gitee和github也可以在推送的时候免去输入账号密码这等重复步骤">(既可以同时连接gitee和github,也可以在推送的时候免去输入账号密码这等重复步骤)</h2>
<h1 id="1-清除之前的git全局配置">1. 清除之前的git全局配置</h1>
<h4 id="之前安装过git且配置过邮箱和用户名的执行下面语句删除之前的git配置">之前安装过git且配置过邮箱和用户名的执行下面语句删除之前的git配置:</h4>
<pre><code class="language-shell">git config --global --list //查看你之前是否设置
//删除之前的配置
git config --global --unset user.name "你的名字" //删除之前的名字配置
git config --global --unset user.email "你的邮箱"//删除之前的名字配置
</code></pre>
<h4 id="如果重新安装则无视以上操作">如果重新安装则无视以上操作</h4>
<h1 id="2生成新的ssh-keys">2.生成新的SSH keys</h1>
<h3 id="先来解释下ssh是什么">先来解释下SSH是什么</h3>
<p><strong>如前所述,许多 Git 服务器(包括但不限于gitee、github、gitlab)都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。 首先,你需要确认自己是否已经拥有密钥。 默认情况下,用户的 SSH 密钥存储在其 <code>~/.ssh</code> 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:</strong></p>
<pre><code class="language-shell">$ cd ~/.ssh
$ ls
authorized_keys2id_dsa known_hosts
config id_dsa.pub
# 生成 key,将邮件地址替换为你 Gitee 或者 Github 使用的邮件地址
$ ssh-keygen -t rsa -C "xxx@xxx.com"
</code></pre>
<h4 id="密钥文件夹目录cusersusernamessh之前没有创建过的为空">密钥文件夹目录(C:\Users\username\.ssh),之前没有创建过的为空</h4>
<p> **我们需要寻找一对以 <code>id_dsa</code> 或 <code>id_rsa</code> 命名的文件,其中一个带有 <code>.pub</code> 扩展名。 <code>.pub</code> 文件是你的公钥,另一个则是与之对应的私钥。 **</p>
<p> <strong>如果找不到这样的文件(或者根本没有 <code>.ssh</code> 目录),你可以通过运行 <code>ssh-keygen</code> 程序来创建它们。 在 Linux/macOS 系统中,<code>ssh-keygen</code> 随 SSH 软件包提供;在 Windows 上,该程序包含于 MSysGit 软件包中。</strong></p>
<h3 id="_"></h3>
<h2 id="生成-ssh-公钥---ssh-keygen--o">生成 SSH 公钥 ssh-keygen -o</h2>
<pre><code class="language-shell">github
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "youremail@qq.com"
gitee
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "youremail@163.com"
</code></pre>
<p>这一步如果默认回车,会生成名为 <code>id_rsa</code> 的文件,你可以输入不同的名字来便于识别文件,比如生成 Gitee 的 ssh key 可以设置为 <code>id_rsa_gitee</code>,设置 Github 的 ssh key 可以设置为 <code>id_rsa_github</code> ,我这里设置为 <code>id_rsa_gitee</code>。</p>
<h2 id="直接回车3下就是默认没有密码">直接回车3下,就是默认没有密码</h2>
<p><strong>密钥生成完毕</strong></p>
<pre><code class="language-shell">Your identification has been saved in id_rsa_gitee.
Your public key has been saved in id_rsa_gitee.pub.
The key fingerprint is:
SHA256:F0K/ojCbFzgMPru11m4g/9uV03oHK+U0rKBLwOOye2c xxx@xxx.com
The key's randomart image is:
+-------+
| . |
| . . |
|. . o |
| . + . . o |
|o X . S o. |
|.+.O o.o o* |
|oo=o+. .+=.+ |
| =++E. .oo+ .|
|++.*=o. .o . |
+---------+
</code></pre>
<h1 id="在-gitee-和-github-添加-public-key">在 Gitee 和 Github 添加 public key</h1>
<p><strong>找到用户目录下的 .ssh 文件夹,查看并复制创建好的 <code>id_rsa_gitee.pub</code> 或 <code>id_rsa_github.pub</code> 的内容。</strong></p>
<pre><code>cd ~/.ssh
# 查看 id_rsa_gitee.pub 文件内容
cat id_rsa_gitee.pub
</code></pre>
<p><strong>会显示这样一串东西,复制它:</strong></p>
<pre><code>ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZbvgUEj3XAXH4HkW27ibdXgV6VHdrA9/WdSDHtiiC55mjPvxj3OtPxIbpeJmhWyHiJWR6
uUuK+gkb//O51uWCPhHqxKR7+45tZ9jHqXW+hEKPp+odQgc+3hiHAjTkn3JGeIJlQp2UdJCDHBrp+kcgVeg91+y7cU3ufaUQ/hpD
rCgn6uvwjwJgnDhV9DYi+gFUFe7LUwa1o4nfwg43ycuOOuT7c6VO2dj/0pLRUVTPQYu/C3kaaPVedir7mKIu/dM6Ec44bhYTp1Dq
qp8BO42Cfo+n+dempqYTe2wcPvuDjSj884IATc/KvBfc86Yd2Uj7NI7li90Y3i6adoxUIWQh xxx@xxx.com
</code></pre>
<p><strong>打开 Gitee 和 Github 的网站找到设置,再找到 SSH Keys,添加复制的 public key 。</strong></p>
<p><strong>生成公钥的语句中不涉及目标网站,所以一个公钥完全可以用于多个网站</strong></p>
<p><img src="%E5%90%8C%E6%97%B6%E4%BD%BF%E7%94%A8gitee%E5%92%8CGitHub%E5%92%8Cgitlab.assets/hWChDg.png" alt="hWChDg.png" loading="lazy"><br>
<img src="%E5%90%8C%E6%97%B6%E4%BD%BF%E7%94%A8gitee%E5%92%8CGitHub%E5%92%8Cgitlab.assets/hWC4bQ.png" alt="hWC4bQ.png" loading="lazy"></p>
<h1 id="创建配置文件">创建配置文件</h1>
<p><strong>在 .ssh 文件夹中创建 config 文件,添加以下内容以区分多个 ssh key:</strong></p>
<pre><code class="language-xml"># gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
#gitlab
Host 47.xxx.xxx.22x
HostName 47.xxx.xxx.xx4
User git
IdentityFile ~/.ssh/id_rsa.gitlab
</code></pre>
<p><strong>添加完上面的配置后到 github 和 gitlab/ gitee网站添加 ssh</strong></p>
<h1 id="测试连接是否正常">测试连接是否正常</h1>
<p>每个托管商的仓库都有唯一的后缀,比如 Github 的是 git@github.com</p>
<p>至此电脑端配置完毕,将两个ssh分别添加到github和gitee中,测试:</p>
<p>ssh -T git@github.com</p>
<p>ssh -T git@gitee.com</p>
<pre><code class="language-shell">Welcome to Gitee.com, xxxx yourname! //返回这句说明连接正常
</code></pre>
<p><strong>下面就可以流畅地用Git推送代码到gitee和github上面了~</strong></p>
<h1 id="更详细的可以看下面给出的的官方文档">更详细的可以看下面给出的的官方文档</h1>
<p>git官方文档</p>
<p>gitee官方文档</p>
<p>github官方文档</p>
<p><strong>下文摘自git官网</strong></p>
<pre><code class="language-shell">$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local
</code></pre>
<p><strong>首先 <code>ssh-keygen</code> 会确认密钥的存储位置(默认是 <code>.ssh/id_rsa</code>),然后它会要求你输入两次密钥口令。 如果你不想在使用密钥时输入口令,将其留空即可。 然而,如果你使用了密码,那么请确保添加了 <code>-o</code> 选项,它会以比默认格式更能抗暴力破解的格式保存私钥。 你也可以用 <code>ssh-agent</code> 工具来避免每次都要输入密码。</strong></p>
<p><strong>现在,进行了上述操作的用户需要将各自的公钥发送给任意一个 Git 服务器管理员 (假设服务器正在使用基于公钥的 SSH 验证设置)。 他们所要做的就是复制各自的 <code>.pub</code> 文件内容,并将其通过邮件发送。 公钥看起来是这样的:</strong></p>
<pre><code class="language-shell">$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local
</code></pre><br><br>
来源:https://www.cnblogs.com/lavard/p/15240737.html
頁:
[1]