简介

ssh-keygenssh-copy-id 是 OpenSSH 工具集中非常实用的两个命令,它们配合使用可以方便地实现基于密钥的 SSH 无密码认证,从而提高服务器访问的安全性与便捷性。

  • ssh-keygen: 用于生成、管理和转换认证密钥。
  • ssh-copy-id: 用于将本地的公钥(id_rsa.pub)复制到远程主机的 ~/.ssh/authorized_keys 文件中。

ssh-keygen 的用法

ssh-keygen 命令用于创建一个新的 SSH 密钥对(一个私钥和一个公钥)。

1. 生成默认密钥对

直接运行以下命令即可生成一个默认的 RSA 密钥对:

ssh-keygen

执行过程中,系统会提示您:

  • 选择密钥文件的保存位置:可以直接按回车键接受默认路径(通常是 ~/.ssh/id_rsa)。
  • 设置私钥的密码(passphrase):这是一个可选的安全增强措施。如果设置了密码,每次使用私钥时都需要输入该密码。如果不需要,可以直接按回车键跳过。

2. 生成指定类型的密钥对

您也可以使用 -t 参数指定密钥的类型,例如生成一个更安全的 ed25519 类型的密钥:

ssh-keygen -t ed25519 -C "your_email@example.com"
  • -t ed25519: 指定密钥类型为 ed25519。
  • -C "your_email@example.com": 为密钥添加一个注释,通常是您的邮箱地址,方便识别。

ssh-copy-id 的用法

当您生成了密钥对之后,需要将公钥(默认为 ~/.ssh/id_rsa.pub)的内容添加到您希望无密码登录的远程服务器上。ssh-copy-id 命令可以自动完成这个过程。

1. 复制公钥到远程服务器

假设远程服务器的用户名是 user,IP地址是 remote_host,执行以下命令:

ssh-copy-id user@remote_host

系统会提示您输入 userremote_host 上的登录密码。输入正确密码后,ssh-copy-id 会自动将您的公钥追加到远程服务器的 ~/.ssh/authorized_keys 文件中。

2. 指定要复制的公钥文件

如果您的公钥文件不是默认的 id_rsa.pub,可以使用 -i 参数指定其路径:

ssh-copy-id -i ~/.ssh/my_other_key.pub user@remote_host

验证无密码登录

完成上述步骤后,尝试再次通过 SSH 连接到远程服务器:

ssh user@remote_host

如果一切顺利,您应该可以直接登录,无需再输入密码。