简介
SSH 协议的典型用途,该协议在企业网络中用于:
为用户和自动化流程提供安全访问
交互式和自动文件传输
发出远程命令
管理网络基础设施和其他任务关键型系统组件。
-
ssh keys是ssh中基于密匙的安全验证,你可以通过创建私人密匙和公用密匙的方式来完成ssh keys方式的ssh登陆验证。
-
使用ssh远程登陆服务器有两种方式,一种是使用密码登陆,另一种是使用ssh key登陆。
SSH共有两种登录方式: 1. 口令验证登录 1. 服务器生成公钥和私钥。 2. 客户端发起连接请求,服务器将公钥发给客户端。 3. 客户端生成口令(服务器密码),并用服务器发来的公钥加密,发送给服务器。 4. 服务器通过私钥解密,拿到口令(服务器密码),如果正确则认证成功。 2. 密钥验证登录 1. 客户端生成公钥和私钥,将公钥提前部署在服务器上。 2. 客户端发起连接请求。 3. 服务器随机生成一个字符串,用本地的公钥加密,发送给客户端。 4. 客户端通过私钥解密,将解密后的字符串发送给服务器。 5. 服务器验证本地字符串和客户端发来的字符串的一致性,如果通过,则认证成功。
ssh生成的密钥类型
算法类型 | 公钥 | 私钥 |
---|---|---|
ED25519 (推荐) | id_ed25519.pub | id_ed25519 |
RSA (不推荐) | id_rsa.pub | id_rsa |
推荐使用ED25519密钥类型
注意:
密钥用于鉴权,请谨慎保管。公钥文件以 .pub 扩展名结尾,可以公开给其他人,而没有 .pub 扩展名的私钥文件不要泄露给任何人!
常见的 SSH 登录密钥使用 RSA 算法。RSA 经典且可靠,但性能不够理想。
只要你的服务器上 OpenSSH 版本大于 6.5(2014 年的古早版本),就可以利用 Ed25519 算法生成的密钥对,减少你的登录时间。如果你使用 SSH 访问 Git,那么就更值得一试。
Ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能在数十倍以上。
准备工具
需要用到 ssh-keygen,它是 OpenSSH 的组件,在 Linux 和 macOS 中一般都自带了。
如果你使用 Windows,安装 Git for Windows 时会一并安装 OpenSSH 到系统中。建议 Windows 用户使用 Git Bash 完成文中操作。
生成密钥
ssh-keygen -t rsa -b 4096 -f 指定私钥名称 -C '注释信息(一般写邮箱)'
# [-t rsa] 表示使用 RSA 算法
# [-b 4096] 表示 RSA 密钥长度 4096 bits (默认 2048 bits),Ed25519 算法不需要指定
# [-f 指定私钥名称] 生成一个私钥文件(同时也会生成一个公钥文件 *.pub)
# [-C ''] 表示在公钥文件中添加注释
# 回车后,会提示输入 passphrase,即为私钥添加一个'解锁口令'
解释:
私钥必须要有 passphrase。如果私钥文件遗失,没有 passphrase 也无法解锁(只能暴力破解)。不要偷懒,passphrase 一定要加。
一对密钥只对应一个 Git 服务。一对密钥通吃各 Git 服务不太明智。
严格来讲,应该在不同的机器上用不同的密钥,出了问题好排查处理。