ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

linux-command 手册精讲:ssh-keygen 命令的密钥生成、管理与格式转换实战

linux-command 手册精讲:ssh-keygen 命令的密钥生成、管理与格式转换实战 文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载ssh-keygen是 OpenSSH 套件中负责认证密钥生成、管理与转换的核心工具也是 linux-command 项目 command/ssh-keygen.md 收录的 600 多个 Linux 命令速查条目之一。本文以该手册条目为主体结合仓库内 ssh、git、apk 等文档中沉淀的真实用法带你掌握从生成密钥对、指定密钥长度与类型、设置口令到查看指纹、提取公钥、跨格式转换再到配合ssh-copy-id实现免密登录的完整链路。ssh-keygen 是什么ssh-keygen 命令用于为 “ssh” 生成、管理和转换认证密钥。按手册记载它支持 RSA 和 DSA 两种认证密钥现代 OpenSSH 版本通常还支持 ECDSA、Ed25519 等更多类型具体可用类型以本机ssh-keygen -t的取值或系统 man 手册为准。在 SSH 认证体系中密钥对由两部分组成私钥保存在本地权限严格受限通常为 600用于签名与解密绝不外传公钥可公开分发通常部署到远程服务器的~/.ssh/authorized_keys中用于验证身份。仓库索引文件 dist/data.json 将该命令描述为「为ssh生成、管理和转换认证密钥」与手册正文一致可以作为查阅入口。语法ssh-keygen(选项)命令本身不要求额外参数绝大多数行为通过选项控制交互式执行时会提示输入文件名与口令。选项速查表手册 command/ssh-keygen.md 中列出了 10 个核心选项逐条整理如下选项说明-b指定密钥长度bit如-b 4096生成 4096 位 RSA 密钥-e读取 OpenSSH 的私钥或者公钥文件转换为其他格式输出-C添加注释通常用于标识密钥用途或持有人邮箱-f指定用来保存密钥的文件名生成时的输出路径-i读取未加密的 ssh-v2 兼容的私钥/公钥文件然后在标准输出设备上显示 openssh 兼容的私钥/公钥-l显示公钥文件的指纹数据fingerprint-N提供一个新密语passphrase-P提供旧密语用于对已有密钥进行口令变更等操作-q静默模式减少输出信息-t指定要创建的密钥类型如rsa、dsa-y读取私钥并输出对应的公钥此外ssh 文档中还展示了与-i、-e配套使用的-m选项用于指定格式转换的目标/源格式ssh-keygen -f keyfile -i -m key_format -e -m key_format # key_format: RFC4716/SSH2(default) PKCS8 PEM实战一生成一对 RSA 密钥最常用的操作是直接运行ssh-keygen为当前用户生成默认密钥此时密钥对默认落在~/.ssh/id_rsa与~/.ssh/id_rsa.pub。仓库 ssh 文档将其概括为ssh-keygen # 为当前用户生成 ssh 公钥 私钥如果需要定制则组合使用-t、-b、-C、-f四个选项。以 git 文档中「创建 SSH 密钥」一节为例# 生成带注释的默认密钥-C 后通常跟邮箱或备注 ssh-keygen -t rsa -C wowohooqq.com # 指定生成目录和文件名-f 指定输出路径 ssh-keygen -t rsa -C wowohooqq.com -f ~/.ssh/ww_rsa第二个例子会生成~/.ssh/ww_rsa私钥与~/.ssh/ww_rsa.pub公钥两个文件这一行为同样体现在 git 文档对-f ~/.ssh/jslite_rsa的说明中「会生成jslite_rsa和jslite_rsa.pub这两个文件」。要点说明-b 4096可显式提高 RSA 密钥强度密钥越长安全性越高但计算开销也越大-C注释会写入公钥末尾便于在多把密钥中区分归属-f指定的路径需确保父目录存在如~/.ssh生成后可查看 git 文档中的公钥打开方式vim ~/.ssh/jslite_rsa.pub。设置与清空口令-N 新密语直接在命令行提供新口令适合脚本化批量生成注意命令行会留下历史记录交互式输入更安全-P 旧密语提供旧口令用于对已加密的私钥进行口令变更操作两者配合可在非交互场景下完成口令重置。仓库 git 文档展示了一个典型组合——生成无口令密钥以便自动化免密登录ssh-keygen -t rsa -P -f ~/.ssh/aliyunserver.key-P 表示旧口令为空字符串配合首次生成即可得到一个不带口令的私钥文件~/.ssh/aliyunserver.key随后直接用于ssh-copy-id分发。实战二查看公钥指纹使用-l可以读取公钥文件并输出其指纹fingerprint指纹是公钥内容的哈希摘要用于在不传输整个公钥的前提下核对密钥身份ssh-keygen -l -f ~/.ssh/id_rsa.pub输出形如2048 SHA256:xxxxxxxx... userhost (RSA)包含密钥位数、指纹哈希、注释与类型。当服务器返回 host key 指纹时即可用此方式与本机保存的公钥比对确认没有被中间人替换。实战三从私钥提取公钥当只有私钥、需要恢复出对应公钥时使用-yssh-keygen -y -f ~/.ssh/id_rsa命令会读取私钥并打印对应的公钥内容到标准输出可重定向追加到目标机器的authorized_keys中。若私钥设置了口令会提示输入密语。实战四密钥格式转换不同平台与工具对密钥格式要求不同-e与-i负责在 OpenSSH 与 RFC4716/SSH2、PKCS8、PEM 等格式之间互转-e读取 OpenSSH 的私钥/公钥文件输出为目标格式-i读取未加密的 ssh-v2 兼容私钥/公钥文件输出为 OpenSSH 兼容格式-m配合指定格式可取值RFC4716/SSH2默认、PKCS8、PEM如 ssh 文档注释所示。典型用法示例# 将 OpenSSH 公钥转为 RFC4716 格式 ssh-keygen -e -m RFC4716 -f ~/.ssh/id_rsa.pub # 将 RFC4716 格式的公钥转回 OpenSSH 格式 ssh-keygen -i -m RFC4716 -f rfc4716_key.pub需要注意-i处理的是未加密密钥若目标文件带口令需先用-P提供旧密语或提前解密。实战五配合 ssh-copy-id 实现免密登录生成密钥只是第一步将公钥安装到远程主机才是免密登录的关键。仓库 ssh 给出了完整的「ssh 大家族」工作流ssh-keygen # 为当前用户生成 ssh 公钥 私钥 ssh-keygen -f keyfile -i -m key_format -e -m key_format # 密钥格式转换 ssh-copy-id userip:port # 将当前用户的公钥复制到服务器的 ~/.ssh/authorized_keys之后可以免密登录git 文档进一步给出了免密登录的完整两步ssh-keygen -t rsa -P -f ~/.ssh/aliyunserver.key ssh-copy-id -i ~/.ssh/aliyunserver.key.pub root192.168.182.112 # 这里需要输入密码一次ssh-copy-id首次分发时需要输入一次远程密码此后使用私钥登录即可免密。若想进一步约束连接参数可在~/.ssh/config中为每台主机声明独立身份文件见 gitHost aliyun1 HostName 192.168.182.112 User root PreferredAuthentications publickey IdentityFile ~/.ssh/aliyunserver.key实战六多账号 SSH 配置当同一台机器需要区分多个代码托管账号时-f命名多把密钥 ~/.ssh/config别名路由是最常用的方案git 文档给出了完整流程生成指定名字的密钥ssh-keygen -t rsa -C 邮箱地址 -f ~/.ssh/jslite_rsa复制公钥~/.ssh/jslite_rsa.pub内容到各托管平台编辑~/.ssh/config为每个 Host 指定独立IdentityFileHost jslite.github.com HostName github.com User git IdentityFile ~/.ssh/jslite_rsa Host work.github.com HostName github.com User git IdentityFile ~/.ssh/work_rsa使用ssh -T gitjslite.github.com或ssh -T work.github.com测试连通性克隆仓库时将地址中的域名替换为 Host 别名。注意若修改了默认id_rsa的名字需要将密钥加入 SSH agent 才能被正确使用见 gitssh-add ~/.ssh/jslite_rsa ssh-add -l # 查看所有的 key ssh-add -D # 删除所有的 key ssh-add -d ~/.ssh/jslite_rsa # 删除指定的 key场景延伸批量部署在 apk 文档的 Alpine 服务器初始化流程中ssh-keygen与ssh-copy-id成对出现用于搭建 Ansible 管理节点的免密通道apk add ansible # server ssh-keygen /etc/ansible/hosts apk add python # node ssh-copy-id这里的用法印证了 ssh-keygen 在自动化运维Ansible 主机清单管理中的基础地位控制节点先生成密钥再由ssh-copy-id分发至各被管节点。注意事项私钥权限私钥文件应保持600权限chmod 600 ~/.ssh/id_rsa公钥可为644过宽的权限会被 SSH 客户端拒绝使用口令取舍带口令的私钥更安全但会破坏自动化脚本的免交互特性需根据场景权衡格式边界-i仅支持未加密密钥转换前先确认目标文件是否设置了口令类型支持手册记载支持 RSA 与 DSA 两种类型实际可用类型请以本机ssh-keygen -t的提示与系统文档为准。在 linux-command 仓库中如何查阅命令正文直接阅读 command/ssh-keygen.md关联实战免密登录与密钥格式转换见 command/ssh.md多账号与免密登录完整流程见 command/git.mdAlpine 批量部署场景见 command/apk.md索引入口可通过 dist/data.json 中ssh-keygen条目的路径字段定位到对应手册页。掌握 ssh-keygen 的选项组合与配套工具链即可完成从密钥生成、格式转换到免密登录的整套 SSH 认证管理。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Aptos CLI E2E 测试包解析用 Move 示例包验证 aptos move 子命令的端到端正确性Aptos CLI E2E 测试包解析用 Move 示例包验证 aptos move 子命令的端到端正确性 Aptos 官方 CLI 的 aptos move文档教程Python SDK 快速起步用 MCPServer 三步构建你的第一个 MCP 服务器Python SDK 快速起步用 MCPServer 三步构建你的第一个 MCP 服务器 本指南带你完整走通 MCPModel Context Protoc文档教程linux-command 命令手册精讲nproc 处理器数量查询详解与实战linux command 命令手册精讲nproc 处理器数量查询详解与实战 本篇基于 linux command 仓库中的 command/nproc.md文档教程上一篇Shiny.BluetoothLE开发教程轻松实现跨平台蓝牙通信下一篇PredNet架构详解从stack_sizes到LSTM模块的参数配置秘籍创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表