git clone一个public仓库时使用ssh出现问题
解决方法:
(1)设置git的用户名和邮箱:
git config --global user.name "用户名"
git config --global user.email "邮箱"
使用git config --list命令查看已有的配置
(2)查看是否存在ssh秘钥
cd ~/.ssh
ls
看是否有id_xxx和id_xxx.pub之类的文件,如果有则秘钥存在,如果没有则需要生成新的秘钥
(3)生成新的秘钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
“-t”用于指定要生成的密钥的类型,“-b”用于指定密钥的位数(长度),-C后面填写git设置时的邮箱名即可
-t 的参数选项:
-
-t rsa
:生成 RSA 密钥,常见的非对称加密算法。 -
-t dsa
:生成 DSA(数字签名算法)密钥。 -
-t ecdsa
:生成 ECDSA(椭圆曲线数字签名算法)密钥,使用椭圆曲线加密算法。 -
-t ed25519
:生成 Ed25519 密钥,一种现代的高性能非对称加密算法。
目前github存在不认使用SHA-1算法rsa秘钥的情况,之后git clone可能会有报错
ERROR: You're using an RSA key with SHA-1, which is no longer allowed. Please use a newer client or a different key type.
选择ed25519不会有报错
以生成ed25519秘钥为例,
会有三个选项,第一个直接回车保存到上面的默认地址,后面两个如果不需要密码直接回车就好
然后会在.ssh文件夹下生成id_ed25519,id_ed25519.pub两个文件,id_ed25519是私有秘钥,id_ed25519.pub是公开秘钥
(4)在github中添加秘钥
cat ~/.ssh/id_ed25519.pub
直接在命令行中查看秘钥,然后复制全部内容(一般以ssh-ed25519开头,以邮箱结尾)
点击右上角头像,选择settings,选择SSH and GPG keys,选择右上角绿色按钮New SSH key,粘贴到key里面
(5)验证是否设置成功
ssh -T git@github.com
如果出现Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.则说明验证成功,本地git连接到了github账户。之后可以使用SSH协议来与GitHub进行身份验证,而无需每次都输入用户名和密码。
(如果更换系统,还需要重新生成秘钥上传到github再连接,感觉不是很方便,目前没有找到将账户上的ssh秘钥下载到本地然后连接的办法,如果有烦请佬们在评论区指点)
然后就可以愉快地git clone了