如何在 Debian 10 上生成和设置 SSH 密钥?
介绍
在当今世界,大部分通信和数据传输都是通过网络和互联网进行的,安全已成为一个至关重要的问题。不安全的网络可能允许恶意用户拦截、修改或窃取敏感数据。为了确保网络通信的安全,加密起着至关重要的作用。
Secure 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 的新文件(如果该文件尚不存在)。在编辑器中打开此文件并粘贴您刚刚复制的内容。
设置适当的权限 -
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 密钥登录远程计算机。
将 SSH 密钥与 Git 存储库结合使用
如何将您的公钥添加到您的 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 密钥。