Git 配置多个 SSH-Key 时遇到的问题
摘要
公司代码仓库选用了码云1 ,个人的代码仓库用了 GitHub2 。
使用 HTTPS
的话,每次需要输入账号密码,十分影响效率。
下面总结一下,多次配置 SSH
遇到的问题以及得出的个人看法。
关于一些概念的个人看法
- SSH 是啥?
SSH 是种途径、方法,比如需要开门,可以直接推门进也可以用钥匙开锁进门。
使用了 SSH 就相当于只能开锁才能进门了,安全性自然会高一点。 - 从零开始
首先,最最开始,门上没锁、手上也没钥匙的时候,我们就需要 生成密钥 了。
虽是生成密钥
,实则给我们生成了锁 = 「公钥」
、钥匙 = 「私钥」
以及一本记录房子地址的本子 = 「known_hosts文件」
。 - 为某间房子的门装锁
也就是添加SSH公钥
了。需要去代码仓库后台设置去操作。具体操作各个仓库都大同小异,按照文档指引操作即可。 - 试一试能不能开锁进门?
这里可能出现一些小问题,就写在了文末,不再赘zhuì述了。 - -!
这里推荐文章《协议森林17 我和你的悄悄话 (SSL/TLS协议)》的这段描述:
对称加密的薄弱之处在于给了太多人的钥匙。如果换一种思路,只给特工锁,而总部保有钥匙,那就容易了。特工将信息用锁锁到盒子里,谁也打不开,除非到总部用唯一的一把钥匙打开。只是这样的话,特工每次出门都要带上许多锁,太容易被识破身份了。总部老大想了想,干脆就把造锁的技术公开了。特工,或者任何其它人,可以就地取材,按照图纸造锁,但无法根据图纸造出钥匙。钥匙只有总部的那一把。上面的关键是锁和钥匙工艺不同。知道了锁,并不能知道钥匙。这样,总部可以将“造锁”的方法公布给所有用户。每个用户可以用锁来加密自己的信用卡信息。即使被别人窃听到,也不用担心:只有总部才有钥匙呢!非对称加密中,给所有人用的锁被称为公钥(public key),总部自己保留的钥匙被称为私钥(private key)。这样一种钥匙和锁分离的加密算法就叫做非对称加密(asymmetric encryption)。
个人所得
1. git 的实用命令:
(1) 查看远程仓库地址
$ git remote -v
(2) 删除远程仓库
$ git remote remove origin
(3) 查看 git 的配置
$ git config --list
2. SSH 相关:
(1) 测试
$ ssh -T git@github.com
$ ssh -T git@gitee.com
(2) known_hosts 的看法
关于在路径 ~/.ssh/
文件夹下的 known_hosts
文件,大概是在本机首次使用安全连接(SSH)与未知 IP 进行通信时写入的记录。所以如果首次连接询问:
$ ssh -T git@github.com
> The authenticity of host 'github.com (13.250.177.223)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
时,我们直接回车键(仔细看确实没有默认值的┑( ̄Д  ̄)┍),大概就会报以下验证失败了:
> Host key verification failed.
正确的应该老实打上 yes,在不该的地方偷懒了我反省,然后就如下啦:
Are you sure you want to continue connecting (yes/no)? yes
> Warning: Permanently added 'github.com,13.250.177.223' (RSA) to the list of known hosts.
Hi your_username! You've successfully authenticated, but GitHub does not provide shell access.
翻译一下,也更好地理解 known_hosts
的这个文件的作用了。