在日常开发中,SSH可能是一个家喻户晓的工具。SSH的全称为Secure Shell,是一种加密网络协议。可以通过SSH协议进行安全的远程登录和其他网络服务。
默认情况下,SSH是以用户名和密码的方式进行验证。然而,加入私钥是一种更为安全的验证方式。本文将详细介绍如何为SSH配置私钥,以确保您的连接更加安全。
一、生成和保存SSH密钥
在开始之前,确保您已经安装了SSH客户端。Windows下推荐使用PuTTY,Mac或Linux下推荐使用Terminal。
步骤1:打开SSH客户端,打开终端窗口,然后使用以下命令生成密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
其中,“-t”参数指定算法类型,对于此示例中的RSA算法,“-b”指定密钥长度为4096位,而“-C”选项指定一个注释来识别密钥的不同用途。在此处替换“your_email@example.com”为您的电子邮件地址,当在同一台电脑上生成多个密钥时,需要使用唯一的注释来识别每个密钥。
步骤2:按提示进行操作,包括选择路径和输入口令等。默认情况下,密钥对存储在当前用户的主目录下的.ssh目录中。公共密钥保存在.ssh/id_rsa.pub文件中,而私钥保存在.ssh/id_rsa文件中。
步骤3:确保.ssh文件夹的权限设置合理。使用以下命令检查权限:
ls -lh ~/.ssh chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
最后一个命令将您的私钥权限设置为仅允许当前用户进行读写操作,确保私钥的安全性。
二、添加SSH公钥至远程服务器
本节将介绍如何将您的公钥添加到远程服务器。这将允许您使用私钥对远程服务器进行身份验证,而无需每次输入密码。
步骤1:使用以下命令将公钥添加到远程服务器上的授权密钥文件中:
ssh-copy-id username@remote_host
其中,“username”是您在服务器上的用户名,“remote_host”是您的服务器地址。执行该命令后,系统会询问您该用户的密码。正确输入密码后,公钥将自动添加到远程服务器上的授权密钥文件中。
步骤2(可选):在服务器上手动添加公钥。如果您无法使用“ssh-copy-id”命令,则可以手动将公钥添加到授权密钥文件中。将公钥的内容复制到.ssh/authorized_keys文件中:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
三、验证SSH私钥
现在,您已经将公钥添加到远程服务器上,下面是如何测试公钥是否正常工作的方式:
步骤1:使用以下命令连接到远程服务器:
ssh username@remote_host
其中,“username”是您在服务器上的用户名,“remote_host”是您的服务器地址。如果在连接时被要求输入密码,则表示未正确设置SSH密钥。
步骤2:如果您在登录时使用了口令来保护您的密钥,则需要手动输入口令。如果消息类似于以下消息,则表示您已经成功连接到远程服务器:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-77-generic x86_64) Last login: Sat Jul 31 21:52:45 2021 from localhost
恭喜您,现在已经为SSH配置了私钥!