Linux ssh-keygen命令用于创建生成、管理和转换SSH认证密钥等用途,现在说下SSH的ssh-keygen命令语法及使用详解:
ssh-keygen命令语法详解
Linux系统下ssh-keygen命令可用于生成、管理和转换SSH认证密钥。使用SSH v1(SSH协议版本1)创建RSA密钥,使用SSH v2(SSH协议版本2)创建RSA密钥。使用-t选项指定生成密钥的类型。如果不带任何选项,使用ssh-keygen命令会生成用于SSH v2连接的RSA密钥。
命令语法:ssh-keygen [选项]
不同选项含义对照表如下:
选项 | 含义 |
---|---|
-N<新密语> | 提供新的密语 |
-v | 详细模式 |
-P<密语> | 提供旧密语 |
-b<位数> | 指定创建密钥的位数。对于RSA密钥,最小尺寸为768位。DSA密钥必须刚好1024位 |
-C<注释> | 提供新的注释 |
-F<主机名> | 搜索known_hosts文件中指定的主机名,列出发现的任何事件 |
-f<文件名> | 指定密钥文件的文件名 |
-t<类型> | 指定密钥创建的类型。SSH v1可能的值为rsa1,SSH v2可能的值为rsa或dsa |
-r<主机名> | 显示指定主机公钥文件的SSHFP指纹资源记录 |
-R<主机名> | 从known_hosts文件中删除所有属于指定主机名的密钥。这个选项主要用于删除经过哈希的主机的密钥 |
-e | 读取OpenSSH的私钥或公钥文件,并以RFC 4716 SSH公钥文件格式在标准输出上显示出来 |
-p | 请求更改私钥文件的密码短语,而不是创建一个新的私钥 |
-q | 安静模式 |
-B | 显示指定的公钥和私钥文件的bubblebabble摘要 |
-y | 读取OpenSSH专有格式的公钥文件,并将OpenSSH公钥显示在标准输出上 |
-c | 请求改变私钥和公钥文件的注释。支持RSA1密钥操作 |
-g | 在使用-r选项显示指纹资源记录的时候使用通用的DNS格式 |
-i | 读取未加密的SSH v2兼容的私钥/公钥文件,然后在标准输出显示OpenSSH兼容的私钥/公钥 |
-H | 对known_hosts文件进行哈希计算。这将把文件中的所有主机名/IP地址替换为相应的哈希值。原来文件的内容将会添加一个“.old”后缀后保存。这些哈希值只能被ssh和sshd使用。这个选项不会修改已经经过哈希的主机名/IP地址,因此可以在部分公钥已经哈希过的文件上安全使用 |
-l | 显示公钥文件的指纹数据。它也支持RSA1的私钥。对于RSA和DSA密钥,将会寻找对应的公钥文件,然后显示其指纹数据 |
常见的ssh-keygen命令使用举例:
创建ssh认证密钥,指定密钥文件为:/root/.ssh/known_hosts
[root@linuxbaike~]# ssh-keygen -f /root/.ssh/known_hosts
创建RSA密钥
[root@linuxbaike~]# ssh-keygen
使用-t参数创建一个指定密钥的类型并添加注释
[root@linuxbaike~]# ssh-keygen -t rsa -C “name@linuxbaike.com”
显示主机rhel的公钥文件的SSHFP指纹资源记录
[root@linuxbaike~]# ssh-keygen -r rhel
使用-e参数读取openssh的私钥或者公钥文件
[root@linuxbaike~]# ssh-keygen -e