博文目录
默认生成的 rsa密钥位置在 ~/.ssh
, 如 C:\Users\mrathena\.ssh
. 各代码托管平台是可以使用同一个SSH密钥的, 这样最方便, 但是为了更安全也可以配置在不同的平台使用不同的密钥
cmd 执行命令 ssh-keygen -t rsa -b 4096 -C "generic"
, -t type rsa, -b 位数 4096位, 如果不用 -C 指定邮箱, 则会生成一个默认的注释, 该注释无关紧要, 不影响验证
选项全部默认(一路回车), 这样在 ~/.ssh
目录下将生成两个文件, 分别是 id_rsa 和 id_rsa.pub, 前者是私钥, 后者是公钥, 需要将公钥内容上传到各代码托管平台
然后 cmd 执行各平台对应的验证命令, 如 github ssh -T [email protected]
, coding.net ssh -T [email protected]
, 如果能给出一些包含你的信息的反馈提示, 说明测试通过了, 如果需要输入密码或者直接报权限拒绝, 则说明配置有问题
GitHub 安全策略更新
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.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
ssh-keygen --help
ssh-keygen -t ecdsa -b 521 -C "generic"
生成 id_ecdsa
和 ‘id_ecdsa.pub’, 将后者内容上传到 GitHub, 把 GitHub 上配置的已经不用了的旧 Key 删掉(不删好像不行), 即可
私钥文件有用, IDE 工具和代码托管平台交互时用得到
在 ~/.ssh
目录下添加一个 config 文本文件, 内容大概如下, Host 就是某个代码托管平台的SSH域名, IdentityFile就是指定该平台验证时使用的私钥, 多密钥方式密钥对的生成方式和单密钥相比, 只需要把保存目录修改一下, 和config中的 IdentityFile 对应上就好了. 同时需要把默认路径下的 id_rsa 和 id_rsa.pub 移除. 用同样的验证方式确认配置正确
Host e.coding.net
Preferredauthentications publickey
IdentityFile ~/.ssh/coding.net.key
Host github.com
Preferredauthentications publickey
IdentityFile ~/.ssh/github.key
安装 TortoiseGit
后会捎带安装 PuTTYgen
程序, 搜索 PuTTYgen
打开 PuTTY Key Generator
工具
确认好 Key 的类型和长度后, 点击 Generate 生成全新的密钥对, 这里以 ECDSA(nistp521) 为例
生成后, 需要保存好(通常在 .ssh 目录)
Load
私钥获得, 所以可不保存ecdsa.ppk
密钥文件(PuTTY Key Generator 不支持查看/保存文本私钥)在使用 Tortoise Git 上传下载 git:// 链接的代码时, 需要配置 PuTTY 私钥 ecdsa.ppk
也可以通过 ssh-keygen 命令生成公私钥文本文件. 然后通过上述工具的 Load 功能将私钥文本文件做成 .ppk 格式