如何在 Linux 上生成 SSH 密钥

核心要点

  • SSH密钥是一种安全的远程服务器访问方式,无需每次都输入密码。它由公钥和私钥组成。
  • 在Linux系统中,可以使用ssh-keygen命令生成SSH密钥对。为了提高安全性,可以考虑添加密码保护。
  • 通过ssh-copy-id命令或手动将公钥内容粘贴到远程服务器的authorized_keys文件中,可以将SSH公钥复制到远程服务器。

SSH密钥允许你在保证远程服务器账户安全的前提下,实现无密码登录。在Linux系统上创建SSH密钥非常简单。

什么是SSH密钥?

SSH密钥是一组通过加密技术生成的密钥,它允许用户安全地登录到远程计算机。SSH密钥实际上是一个密钥对,包含一个公钥和一个私钥。你可以将公钥复制到远程计算机,远程计算机将使用这个公钥来验证你的身份。私钥是保密的,应该始终安全地保存在你的本地计算机上。

请绝对不要与任何人分享你的SSH私钥!

在登录过程中,远程服务器会使用SSH来比较你的公钥和私钥。如果它们匹配,你将被授权进入远程系统。这种密钥对系统不仅方便快捷,还能有效地保证安全性。

如何生成远程密钥

要生成SSH密钥对,只需在Linux命令行中使用ssh-keygen命令即可。该命令会提示你选择保存密钥的文件位置,并让你选择输入或不输入密码(密码是可选的)。设置密码可以为你的密钥增加额外的安全保护层。

如果你选择了使用密码,请务必记住它!如果忘记密码,你将无法使用该密钥登录。

如果你希望实现无密码登录,只需在提示输入密码时直接按回车键,不输入任何内容即可。

默认情况下,ssh-keygen使用Ed25519算法。对于大多数情况,这种算法已经足够安全。你可以使用-t标志来指定你想要使用的其他算法。一般来说,除非你的服务器不支持默认的算法,否则你不需要更改它。你可以查阅ssh-keygen的手册页来了解如何生成不同类型的密钥对。

将新SSH密钥添加到远程计算机

现在你已经生成了密钥对,接下来你需要将公钥复制到远程服务器。有两种方法可以实现这一目的。

第一种方法,也是最简单的方法是使用ssh-copy-id工具。只需使用远程服务器帐户的用户名和地址来调用它即可:

ssh-copy-id [email protected]

输入你的远程服务器密码,该工具会将你的公钥自动复制到远程服务器。

现在你可以尝试登录远程服务器:

ssh [email protected]

如果ssh-copy-id不起作用,你必须手动复制和粘贴你的公钥。你的公钥文件通常位于你本地用户主目录的.ssh文件夹下,文件名以.pub结尾。打开这个文件,将其中的内容复制并粘贴到远程计算机上.ssh/authorized_keys文件中。

保存该文件后,你现在应该可以使用SSH登录服务器了。请确保该文件的权限设置为只有你可以写入,否则可能会遇到权限错误。