# ssh-keygen

ssh-keygen 是Unix和类Unix计算机系统上的安全外壳(SSH)协议套件的标准组件,用于通过使用各种加密技术在不安全的网络上建立远程计算机之间的安全shell会话。ssh-keygen实用程序用于生成,管理和转换身份验证密钥。

这些密钥与相关工具GnuPG使用的密钥不同。

# 支持的密钥格式

最初,SSH的协议版本1(现已弃用)仅支持RSA算法。截至2016年,RSA仍然被认为是强大的,但建议的密钥长度随着时间的推移而增加。

SSH协议版本2引入了对DSA算法的支持。由于DSA算法与美国国家安全局 (NSA)有关,因此爱德华·斯诺登的全球监控披露对其安全性方面提出了质疑,特别是考虑到Bullrun解密计划。

OpenSSH也支援新式ECDSA和Ed25519。

# ssh-keygen命令语法

ssh-keygen命令的语法如下:

    ssh-keygen [选项] 
ssh-keygen命令选项 描述
-b bits 指定要创建的密钥中的位数。 最小位长度为768位,默认长度为2048位。
-C comment 提供新注释。
-p 请求更改私钥文件的密码而非创建新私钥。
-t 指定要创建的密钥类型。
-o 使用新的OpenSSH格式。
-q 静默的ssh-keygen。 在创建新密钥时,/etc/rc文件会使用它。
-N 提供新的密码。
-B 对于ssh-keygen2,以Bubble Babble格式显示密钥指纹。
-l 显示密钥指纹。

# ssh-keygen实用程序使用的文件

ssh-keygen实用程序使用各种文件来存储公钥和私钥。ssh-keygen实用程序使用的文件如下:

  • $HOME/.ssh/identity: 使用SSH协议版本1时,$HOME/.ssh/identity文件包含RSA私钥。
  • $HOME/.ssh/identity.pub: 当你使用SSH协议版本1时,$HOME/.ssh/identity.pub文件包含用于进行身份验证的RSA公钥。用户应将其内容复制到用户希望使用RSA身份验证登录的远程系统的$HOME/.ssh/authorized_keys文件中。
  • $HOME/.ssh/id_dsa: $HOME/.ssh/id_dsa文件包含用户的协议版本2 DSA身份验证标识。
  • $HOME/.ssh/id_dsa.pub: 当您使用SSH协议版本2时,$HOME/.ssh/id_dsa.pub文件包含用于身份验证的DSA公钥。 用户应将其内容复制到用户希望使用DSA身份验证登录的远程系统的$HOME/.ssh/authorized_keys文件中。
  • $HOME/.ssh/id_rsa: $HOME/.ssh/id_rsa文件包含用户的协议版本2 RSA身份验证标识。 除了用户之外,任何人都不应该有读取此文件的权限。
  • $HOME/.ssh/id_rsa.pub: $HOME/.ssh/id_rsa.pub文件包含用于身份验证的协议版本2 RSA公钥。 应在用户希望使用公钥认证登录的所有计算机上将此文件的内容添加到$HOME/.ssh/authorized_keys。

# 生成新的 SSH key

  1. 打开 Terminal (终端)
  2. 粘贴下面的文字,替换成你的电子邮件地址
ssh-keygen  -C "your_email@example.com"