如何在 Debian 10 上生成和设置 SSH 密钥?

linuxoperating systemopen source

简介

在当今世界,大多数通信和数据传输都通过网络和互联网进行,安全已成为一个至关重要的问题。不安全的网络可能允许恶意用户拦截、修改或窃取敏感数据。为了确保网络安全通信,加密起着至关重要的作用。

安全 Shell (SSH) 是一种加密协议,允许您安全地访问远程系统。它通过不安全的网络在两个不受信任的主机之间提供安全通信。

SSH 密钥是 SSH 用于系统间安全通信的身份验证凭据。与单独使用密码相比,它们提供了一种更安全的服务器登录方式。

在 Debian 10 上生成 SSH 密钥

SSH 密钥是保护互联网通信安全的有效方法。通过使用 SSH 密钥,您可以确保只有授权方才能访问您的服务器。在 Debian 10 上生成密钥非常简单,只需使用 ssh-keygen 命令行工具即可。

使用 ssh-keygen 命令生成 SSH 密钥的分步指南

要在 Debian 10 上生成 SSH 密钥,您需要遵循几个简单的步骤 -

  • 打开终端并输入以下命令 -

ssh-keygen
  • 系统将要求您输入新密钥文件的文件名和位置。

    默认位置通常是 ~/.ssh/id_rsa,这在大多数情况下都可以。如果您想更改位置或文件名,现在就可以更改。

  • 接下来,系统会提示您输入密码。密码会使用密码加密您的私钥,从而增加额外的安全保障。

    强烈建议您选择一个包含大小写字母、数字和符号的强密码。

  • 输入两次密码后,ssh-keygen 将生成两个文件:一个是私钥文件 (id_rsa),另一个是公钥文件 (id_rsa.pub)。

在 Debian 10 服务器上设置 SSH 密钥

有两种方法可以将公钥复制到服务器:使用 ssh-copy-id 命令或通过 SFTP/SCP 手动复制。

使用 ssh-copy-id 命令复制公钥

将公钥复制到服务器的最简单方法是使用 ssh-copy-id 命令。此命令会将公钥文件(通常名为 id_rsa.pub)的内容复制到远程计算机主目录中名为 authorized_keys 的文件中。

要使用此方法,请在终端窗口中运行以下命令 -

ssh-copy-id username@remote_host

将"username"替换为您在远程计算机上的用户名,将"remote_host"替换为其 IP 地址或主机名。系统将提示您输入远程计算机上的密码,然后您的公钥将被复制过来。

手动复制公钥

如果您不想使用 ssh-copy-id,您可以通过 SFTP 或 SCP 手动复制公钥。首先,运行以下命令找到您的公钥文件:

cat ~/.ssh/id_rsa.pub 

复制打印出来的所有内容(包括开头的"ssh-rsa",但不包括结尾的 username@hostname)。接下来,使用 FileZilla 或 WinSCP 等 SFTP/SCP 客户端连接到远程计算机。

导航到您的主目录,如果文件 authorized_keys 不存在,请创建一个名为"authorized_keys"的新文件。在编辑器中打开此文件,并粘贴您刚刚复制的内容。

使用以下命令设置适当的权限:-

chmod 600 ~/.ssh/authorized_keys

禁用密码验证以增强安全性

将公钥复制到服务器后,您应该禁用密码验证以增强安全性。这可确保只有拥有正确私钥的用户才能访问服务器。要禁用密码验证,请在远程计算机上运行以下命令编辑 /etc/ssh/sshd_config 文件:-

sudo nano /etc/ssh/sshd_config

找到"#PasswordAuthentication yes"行,并将其更改为"PasswordAuthentication no"。

保存并关闭文件。使用以下命令重启 SSH 服务:-

sudo systemctl restart sshd

现在,您只需使用 SSH 密钥即可登录远程计算机。

在 Git 仓库中使用 SSH 密钥

如何将公钥添加到您的 Git 帐户?

将公钥添加到您的 Git 帐户是使用 SSH 密钥管理 Git 仓库的重要步骤。使用 ssh-keygen 命令生成密钥后,您需要复制公钥文件(通常名为 id_rsa.pub)的内容并将其粘贴到您的 Git 帐户设置中。为此,请登录您的 Git 帐户并导航到设置页面的"SSH 密钥"部分。

在本地计算机上配置 Git 客户端以使用 SSH 而不是 HTTPS

默认情况下,大多数 Git 客户端在与远程仓库通信时使用 HTTPS。但是,一旦您将公钥添加到 Git 帐户并设置了 SSH 身份验证,建议您在本地计算机上将 git 客户端配置为使用 SSH 协议而不是 HTTPS。

为此,请打开终端或命令提示符,并导航到要从 HTTPS 切换到 SSH 的仓库。然后运行以下命令 -

git remote set-url origin git@github.com:/.git

将 `` 替换为您的用户名,将 `` 替换为您要切换的仓库的名称。

管理 SSH 密钥的最佳实践

密钥轮换频率

管理 SSH 密钥的最佳实践之一是定期轮换密钥。这意味着生成新的密钥对并替换旧的密钥对。轮换频率取决于所需的安全级别以及密钥对的使用频率。

对于高安全性环境,建议每 90 天或更短时间轮换一次密钥。此外,如果怀疑密钥可能已被泄露,应立即轮换。

如何在需要时撤销访问权限

撤销访问权限意味着阻止未经授权的用户使用其 SSH 密钥对访问您的服务器。如果您怀疑有人可能泄露了您的私钥,或者曾经获得授权的用户不再需要访问权限,您可以通过从服务器上的 authorized_keys 文件中删除其公钥来撤销其访问权限。

保护私钥安全的技巧

必须始终确保 SSH 私钥的安全,因为拥有此文件意味着拥有对任何系统的完全控制权,而这些系统对应的公共密钥部分会作为用于登录的 authorized_key 安装。

有几种方法可以保护您的 SSH 私钥安全 -

  • 使用强密码保护它们

  • 将它们存储在加密存储中,例如外部硬盘

  • 使用密码管理器管理您的 SSH 密钥并确保其安全

  • 不要与任何人共享它们,也不要将它们上传到在线存储或 Git 存储库。

请记住,如果您的私钥被泄露,您需要立即撤销访问权限并生成新的密钥对。确保私钥安全是防止未经授权访问系统的第一道防线。

结论

在 Debian 10 上生成和设置 SSH 密钥是确保服务器和客户端之间安全通信的关键步骤。与传统的基于密码的身份验证相比,使用 SSH 密钥具有诸多优势,包括更高的安全性、便捷性和易用性。按照本文概述的分步指南,您可以快速轻松地生成和设置 SSH 密钥。


相关文章


有用资源