公钥使用 方法2 手动复制!
公钥使用 方法2 手动复制!
公钥使用 方法2 手动复制!
在 Win11 PowerShell 中通过 SSH 密钥实现无密码访问 Linux 服务器
要在 Win11 PowerShell 中配置无密码访问 Linux 服务器,核心是通过 SSH 密钥认证 实现(替代密码登录),无需安装额外工具(Win11 自带 OpenSSH 客户端)。以下是完整步骤:
前提条件
-
Linux 服务器已开启 SSH 服务(默认端口 22,需确保防火墙放行 22 端口)。
-
Win11 已启用 OpenSSH 客户端:
- 打开「设置」→「应用」→「可选功能」→ 查看是否有 OpenSSH 客户端,无则点击「添加功能」安装。
步骤 1:在 Win11 PowerShell 生成 SSH 密钥对
-
以管理员身份打开 PowerShell(右键开始菜单 → 选择 Windows PowerShell (管理员))。
-
执行密钥生成命令:
PowerShellssh root@192.168.3.150-
-t rsa:指定密钥类型为 RSA -
-b 4096:密钥长度,安全性更高
-
-
命令执行后会出现 3 次提示,全部按回车默认配置:
-
提示 1:
Enter file in which to save the key→ 密钥保存路径(默认C:\Users\你的用户名.ssh\id_rsa) -
提示 2:
Enter passphrase→ 密钥密码(留空 = 无密码,直接回车) -
提示 3:
Enter same passphrase again→ 再次确认密码(留空直接回车)
-
-
生成成功后,
C:\Users\你的用户名.ssh\目录下会有 2 个文件:-
id_rsa:私钥(本地保存,绝对不能泄露) -
id_rsa.pub:公钥(需要上传到 Linux 服务器)
-
步骤 2:将公钥上传到 Linux 服务器
推荐 2 种方法,优先用方法 1(更便捷)。
方法 1:用 ssh-copy-id 自动上传(推荐)
-
在 PowerShell 中执行以下命令,替换为你的 Linux 服务器信息:
PowerShellssh-copy-id -i C:\Users\你的用户名\.ssh\id_rsa.pub linux用户名@Linux服务器IP- 示例:
ssh-copy-id -i C:\Users\Jeremy.ssh\id_rsa.pub ubuntu@192.168.1.100
- 示例:
-
首次执行会提示确认服务器指纹,输入
yes回车,然后输入 Linux 服务器的密码 ,回车后公钥会自动上传到 Linux 服务器的~/.ssh/authorized_keys文件中。
方法 2:手动复制公钥(备用,适用于 ssh-copy-id 不可用场景)
-
在 Win11 中打开
C:\Users\你的用户名.ssh\id_rsa.pub文件,全选复制所有内容。 -
登录 Linux 服务器(用密码登录),执行以下命令:
Bash# 1. 创建 .ssh 目录(确保存在)
mkdir -p /root/.ssh
2. 设置目录权限(必须为 700,SSH 认证的关键)
chmod 700 /root/.ssh
3. 将你的公钥写入 authorized_keys 文件(直接复制这条,公钥已完整填入)
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCX1p8u+W6ubDeDjEdQPzGfKuH4fIA2Kxh4wQC1MZH2iOS4vHzUxt2IYRbVcDkBR2JjDVRUX9D7cGWtfPUdrRm2Rl6gAT6Fve6dAKnpHT5iZgL7Fsxbs1I6MUT51DODCLtFOAUkrwkCdG7fdKCLfKkvGj0Lm82WqHg+qHOjSQp3lSGDYxPUIbXX9zyji/WR4ZJb4oXYRiBma0wya+zUwRv14okvfqR5VO+LHU9VXX/0OTru8EUhdp3STCs5xgHiQ7jj3Kw3pbDaE/q/t0bquijdJvWu3X00cnhrWVLdnd4IdmbcIf3Khh6rapHkUvyx/bsq2YFijdRDZ/xlMcOl9DuwtwUbJjkZ6AnBJ1dXkFlZbWDLsOziZ9+DUhNWXEzvxtjFb/IhruulOq9sSvREOPp97KKlFSjByarN8u0T2yHS+5CNR7RkCVHGi3ZVbu5OtQzH7qVVbiSDOE34sM78M6dJuNKhn55IulUFZ3gS/Jj1+uFzPBHN/A8sl/OKkfmqdnifirouE1KxC6lUtGHr23ULsi2TZ1a67l82n4JA9b6OSpYPg2tPGt7eJY3kz/i5/WpCAf5ZTlNzUDStfZfDidjZMxSMgRxs+dqn50RtIgkxUnVL2QUxnjXo9NxuHFTqROMsXxucaOZwnbY8UBzJZBLZLFneSgpC9U1UvWMrtsshbw== jeremy@snoopy" >> /root/.ssh/authorized_keys
4. 设置文件权限(必须为 600,否则密钥认证失效)
chmod 600 /root/.ssh/authorized_keys
```
步骤 3:测试无密码登录
在 Win11 PowerShell 中执行登录命令,无需输入密码即可成功连接:
PowerShell
# 1. 创建 .ssh 目录(如果不存在)
mkdir -p ~/.ssh
# 2. 设置目录权限(必须为 700,否则 SSH 会拒绝认证)
chmod 700 ~/.ssh
# 3. 将公钥内容写入 authorized_keys 文件
echo "你复制的公钥内容" >> ~/.ssh/authorized_keys
# 4. 设置文件权限(必须为 600)
chmod 600 ~/.ssh/authorized_keys
示例:ssh ubuntu@192.168.1.100
常见问题排查
-
权限错误 :Linux 服务器的
~/.ssh目录权限必须是700,authorized_keys必须是600,否则 SSH 会优先要求密码登录。 -
SSH 服务未开启 :Linux 服务器执行
sudo systemctl start sshd启动服务,sudo systemctl enable sshd设置开机自启。 -
防火墙拦截 :Linux 服务器放行 22 端口,例如
sudo ufw allow 22(UFW 防火墙)。