OpenSSH
ssh-agent(1)
ssh-agent(1)
是一个工具,用于在会话期间将私钥存储在内存中,以便重复使用。通常,它在会话开始时启动,随后的窗口或程序作为客户端与代理进行通信。环境变量 SSH_AUTH_SOCK
指定与代理通信所使用的套接字路径。
ssh-add(1)
ssh-add(1)
是一个工具,用于将密钥身份加载到代理中以便重复使用。它也可以用来从代理中移除身份。代理存储用于身份验证的私钥。
ssh-keyscan(1)
ssh-keyscan(1)
从 OpenSSH 版本 2.5.1 开始就已成为 OpenSSH 套件的一部分,用于获取公钥。使用 ssh-keyscan(1)
或任何其他方法获取的密钥必须通过检查密钥指纹来验证,以确保密钥的真实性并减少中间人攻击的可能性。默认情况下,ssh-keyscan(1)
请求使用 SSH 协议 2 的 ECDSA 密钥。最初的版本由 David Mazieres 编写,Wayne Davison 添加了对 SSH 协议版本 2 的支持。
ssh-keygen(1)
ssh-keygen(1)
用于生成用于身份验证的密钥对或证书,更新和管理密钥,或验证密钥指纹。它与 SSH 密钥配合使用,并且可以执行以下操作:
- 生成新的密钥对,包括 ECDSA、Ed25519、RSA、ECDSA-SK 或 Ed25519-SK。
- 从已知主机中移除密钥
- 从私钥再生公钥
- 更改私钥的密码短语
- 更改私钥的注释文本
- 显示特定公钥的指纹
- 显示特定公钥的 ASCII 艺术指纹
- 将密钥加载到智能卡中(如果读卡器可用)
如果使用过时的协议 SSH1,则 ssh-keygen(1)
只能生成 RSA 密钥。然而,SSH1 已被弃用,使用此协议的系统应进行更新。虽然可以生成 DSA 密钥,但它们也已弃用,应替换。
密钥指纹的一项重要用途是在首次连接机器时验证密钥的真实性。指纹是公钥的哈希或摘要。可以通过安全的方式(例如邮寄、传真、短信或电话)传输指纹,确保其真实性和未被篡改。
ssh-copy-id
ssh-copy-id
是某些 Linux 发行版中包含的一个脚本,用于将公钥安装到远程机器的 authorized_keys
文件中。它是一个简单的 shell 脚本,建议在首次登录后手动检查 authorized_keys
文件,确保公钥正确复制。
ssh-vulnkey
ssh-vulnkey
是某些 GNU/Linux 发行版中包含的工具,用于检查密钥是否在黑名单中,这些密钥在使用某个破损版本的 OpenSSL 时可能被泄露。这个黑名单的引入是因为该版本的 OpenSSL 生成的密钥容易预测并被泄露。通过该破损版本生成的密钥无法修复,必须替换。该问题已经修复,新的密钥应该是安全的。