在 Windows 上生成 SSH 公钥并实现免密登录 Linux,可以使用 ssh-keygen
命令,这是 Windows 10 和 Windows 11 中默认包含的 OpenSSH 工具的一部分。下面是详细步骤:
在 Windows 上生成 SSH 公钥
-
打开 PowerShell 或命令提示符:
- 在开始菜单中搜索并打开 PowerShell 或命令提示符(cmd)。
-
使用
ssh-keygen
生成密钥对:-
输入以下命令来生成密钥对:
ssh-keygen -t rsa -b 2048
-
当系统提示您输入存储密钥的位置时,可以按 Enter 使用默认路径(通常是
C:\Users\YourUsername\.ssh\id_rsa
)。如果已经存在,会提示是否覆盖,视情况回答。 -
提示输入密码时,可以直接按 Enter,表示不设置密码(即免密登录)。
-
-
查看生成的公钥:
- 默认情况下,公钥(
id_rsa.pub
)和私钥(id_rsa
)将会保存在C:\Users\YourUsername\.ssh\
目录中。
- 默认情况下,公钥(
将公钥复制到 Linux 服务器
-
手动上传或使用
ssh-copy-id
:-
手动方式:
-
将公钥文件上传到服务器:
type $HOME\.ssh\id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
-
确保
~/.ssh
目录和authorized_keys
文件具有正确的权限:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
-
使用 Windows Subsystem for Linux (WSL):
- 如果 WSL 已安装,您可以在 WSL 上运行
ssh-copy-id
命令上传公钥。
- 如果 WSL 已安装,您可以在 WSL 上运行
-
-
测试免密登录:
-
在 Windows 上使用 SSH 客户端,连接到远程 Linux 服务器以测试配置:
ssh username@remote_host
-
如果一切顺利,您应该能够免密码登录到远程服务器。如果遇到问题,请确保 authorized_keys
文件的权限设置正确,且公钥内容无误。