SSH key对于开发者来说并不陌生,不管是远程登录还是git提交代码,SSH key与使用账号密码相比,更加安全便捷。本文介绍目前最新的key格式 Ed25519。
SSH常见key格式
- DSA 它是不安全的,OpenSSL从v7版本开始已放弃对其支持,如果你正在使用,请马上升级。
- RSA 安全性依赖于key的大小,3072位或4096位的key是安全的,小于此大小的key可能需要升级一下,1024位的key已经被认为不安全。
- ECDSA 安全性取决于你的计算机生成随机数的能力,该随机数将用于创建签名,ECDSA使用的NIST曲线也存在可信赖性问题。
- Ed25519 是目前最推荐的公钥算法。
Ed25519的优势
OpenSSL 从6.5版本引入Ed25519,是使用Twisted Edwards curve的EdDSA实现。与DSA或ECDSA相比,它使用的是椭圆曲线加密技术可提供更好的安全性和性能。
RSA是目前使用最广泛的SSH key格式,但同Ed25519相比,RSA速度更慢,且当key小于2048位时是不安全的。
Ed25519公钥更为紧凑,仅68个字符。生成密钥和签名的过程都非常快,使用Ed25519进行批量签名验证也很快。它是为防碰撞而设计的,防哈希冲突。
生成Ed25519密钥
ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "john@example.com"
参数说明:
- -o : 使用新的OpenSSH格式来存储私钥,当使用ed25519格式时,默认会启用此选项
- -a : 进行几轮KDF。值越大则密码验证越慢,也能更好的抗暴力破解。
- -t : 创建的key的类型,我们使用ed25519
- -f : 生成的文件名
- -C : 可选注释,通常写自己的邮箱
生成好后,就可以像以往一样使用了。
对于macOS用户,为了自动使用key并且把密码保存在keychain中,需要额外的设置 ~/.ssh/config
1 | Host * |
然后将私钥添加到ssh agent:ssh-add -K ~/.ssh/id_ed25519
也可以在ssh的时候自定义使用哪个key,
1 | Host awesome |
然后使用 ssh awesome 即可登录。
(完)
(原创文章,转载请注明出处)