在互联网时代,保护服务器免受未经授权的访问至关重要。传统上,服务器通过用户名和密码组合来保护SSH(安全外壳)连接。然而,这种方法的弱点在于密码有可能被破解。为了提高安全性,我们可以使用SSH密钥对来识别 ourselves。本文将指导您如何在Debian服务器上生成SSH密钥对,并将公钥复制到服务器,从而实现无密码的SSH登录。
一、背景资料
在本教程中,我们将使用一个简单的网络设置,包括一台本地网络上的Debian PC和一个互联网上的Debian Linux服务器。这个设置不是必需的,因为文中提供的命令在大多数Linux发行版中都是相似的。
二、什么是SSH密钥对?
SSH密钥对由两个密钥组成:一个公钥和一个私钥。公钥用于服务器认证,私钥则用于客户端身份验证。这两个密钥基于复杂的加密算法,确保了它们的安全性和独特性。私钥应始终保持机密,而公钥可以安全地分发给服务器。
三、生成SSH密钥对
1. 打开终端并进入SSH密钥存储目录:
bash
cd ~/.ssh
2. 使用ssh-keygen命令生成密钥对:
bash
ssh-keygen -t rsa -b 4096
- -t rsa 指定使用RSA算法。
- -b 4096 指定密钥长度为4096位,提供更高的安全性。
3. 程序会提示您输入密钥对文件名。为了简化管理,我们使用默认文件名:
bash
Enter file in which to save the key (/home/user/.ssh/id_rsa): [Press enter]
直接按回车键以接受默认文件名id_rsa。
4. 程序还会提示您输入密码短语:
bash
Enter passphrase (empty for no passphrase): [Type passphrase]
如果您想要一个额外的安全层,可以输入一个密码短语。否则,直接按回车键以留空密码短语。
5. 最后,程序会提示您确认密码短语:
bash
Enter same passphrase again: [Type passphrase]
再次输入相同的密码短语,然后按回车键。
6. 生成密钥对后,您将看到类似以下的输出:
bash
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:abcdefg user@example.com
The key's randomart image is:
+---[RSA 4096]----+
|...+.+.+.+ |
|.+++.+..+.. |
|..+++..+.. |
|..+++..+.. |
|..+++..+.. |
|..+++..+.. |
|..+++..+.. |
|..+++..+.. |
|...++..+.. |
+----[SHA256]-----+
四、为Putty生成密钥对(仅限Windows用户)
如果您在Windows上使用Putty作为SSH客户端,您需要将私钥转换为Putty兼容的格式(.ppk)。在Debian系统中,可以使用puttygen工具来完成这一任务:
1. 确保安装了putty-tools包:
bash
sudo apt install putty-tools
2. 使用puttygen将私钥转换为.ppk格式:
bash
puttygen id_rsa -O private -o id_rsa.ppk
- -O private 指定私钥格式。
- -o id_rsa.ppk 将转换后的私钥保存为id_rsa.ppk。