本章目录:
前言
在日常的开发或运维工作中,使用 SSH 密钥进行身份验证,避免了每次都输入密码的麻烦。本文将详细介绍如何在 Windows 系统上生成 SSH 密钥对,并将公钥添加到 Linux 服务器上,以便通过 SSH 免密登录。
1. 准备工作
如果你需要通过 SSH 访问 Linux 服务器,那么首先需要生成一对 SSH 密钥(公钥和私钥)。通常推荐使用 RSA 算法生成密钥对。生成的密钥将存储在 Windows 本地,之后将公钥上传到远端的 Linux 服务器,以实现无密码登录。
2. 生成 SSH 密钥对
步骤 1:打开命令行
首先,打开 Windows 的命令行(CMD)。可以按下 Win + R
键,然后输入 cmd
,按下回车进入命令行界面。
sshkeygen__21">步骤 2:运行 ssh-keygen
命令
在命令行中输入以下命令:
ssh-keygen
你也可以指定生成 RSA 密钥对:
ssh-keygen -t rsa
步骤 3:选择密钥保存位置
执行命令后,会提示你输入保存密钥的文件位置。默认情况下,密钥会保存在 C:\Users\XXX\.ssh\id_rsa
文件中(XXX
是你的用户名)。如果你希望保存到其他位置,可以自行指定文件路径。如果直接按回车,密钥将保存在默认位置。
Enter file in which to save the key (C:\Users\XXX\.ssh\id_rsa):
步骤 4:设置密钥密码(可选)
接下来,命令行会要求你输入密钥的密码。你可以选择设置密码,也可以直接按回车跳过,生成一个无密码的密钥。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
步骤 5:生成密钥对
完成上述步骤后,密钥对将生成在指定的目录下。命令行输出将显示类似以下内容:
Your identification has been saved in C:\Users\XXX\.ssh\id_rsa.
Your public key has been saved in C:\Users\XXX\.ssh\id_rsa.pub.
The key fingerprint is:
SHA256:k/fZW0MI2odocmufHxptziPKxrNu4guuq0fTX/miWEs
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| . |
| .+ o . |
| . .S=oo o . |
| o . +=..oo. |
| . ...Eoo..o+...|
| .. =o+*.oB..o.|
| .oooo.=B==+o+o |
+----[SHA256]-----+
至此,你已经成功生成了一个 RSA 密钥对。
3. 查看生成的密钥文件
生成的密钥对将保存在以下路径:
C:\Users\XXX\.ssh\id_rsa ==> 私钥文件
C:\Users\XXX\.ssh\id_rsa.pub ==> 公钥文件
- 私钥(
id_rsa
)保留在本地,确保安全,绝对不能泄露。 - 公钥(
id_rsa.pub
)需要上传到你希望访问的 Linux 服务器中。
4. 将公钥添加到 Linux 服务器
步骤 1:复制公钥
打开 id_rsa.pub
文件,你可以看到类似以下内容:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArM..(长一串字符)... user@host
复制该文件中的所有内容(从 ssh-rsa
开始,到最后的 user@host
结束)。
步骤 2:在 Linux 服务器上配置公钥
-
使用 SSH 登录到你的 Linux 服务器(如果已经配置了密码登录)。
-
在服务器上,打开或创建
~/.ssh/authorized_keys
文件:nano ~/.ssh/authorized_keys
-
将你复制的公钥粘贴到
authorized_keys
文件中。 -
保存并关闭文件。确保文件的权限设置正确,执行以下命令来设置权限:
chmod 600 ~/.ssh/authorized_keys
-
确保
.ssh
目录本身的权限是 700:chmod 700 ~/.ssh
步骤 3:验证配置
现在,你已经将公钥添加到 Linux 服务器。尝试从 Windows 本地进行 SSH 登录,使用以下命令:
ssh username@linux_server_ip
如果配置成功,你将无需输入密码,即可直接登录到远程 Linux 服务器。
5. 完成免密登录
当你的公钥已经成功添加到 Linux 服务器并且权限配置正确时,你就可以通过 SSH 免密登录了。这样你无需每次都输入密码,操作会更加高效便捷。
6. 常见问题
1. Permission denied (publickey) 错误
如果你遇到 Permission denied (publickey)
错误,通常是因为以下原因之一:
-
~/.ssh
目录或authorized_keys
文件的权限设置不正确,确保它们的权限为 700 和 600。 -
服务器的 SSH 配置文件
/etc/ssh/sshd_config
中没有允许公钥认证。请检查是否有如下设置:PubkeyAuthentication yes
修改后,重启 SSH 服务:
sudo systemctl restart sshd
2. 如何更换密钥
如果你需要更换生成的密钥(例如,私钥泄露了),只需要重新生成一对新的密钥,并按照上述步骤替换 authorized_keys
文件中的公钥即可。
总结
通过以上步骤,你已经在 Windows 上成功生成了 SSH 密钥对,并将公钥添加到 Linux 服务器上,实现了免密登录。这不仅提升了安全性(避免明文密码泄露),也提高了工作效率。希望本文能帮助你顺利配置 SSH 无密码登录。