在 Win11 PowerShell 中通过 SSH 密钥实现无密码访问 Linux 服务器,公钥使用 方法2 手动复制

公钥使用 方法2 手动复制!
公钥使用 方法2 手动复制!
公钥使用 方法2 手动复制!

在 Win11 PowerShell 中通过 SSH 密钥实现无密码访问 Linux 服务器

要在 Win11 PowerShell 中配置无密码访问 Linux 服务器,核心是通过 SSH 密钥认证 实现(替代密码登录),无需安装额外工具(Win11 自带 OpenSSH 客户端)。以下是完整步骤:

前提条件

  1. Linux 服务器已开启 SSH 服务(默认端口 22,需确保防火墙放行 22 端口)。

  2. Win11 已启用 OpenSSH 客户端:

    • 打开「设置」→「应用」→「可选功能」→ 查看是否有 OpenSSH 客户端,无则点击「添加功能」安装。

步骤 1:在 Win11 PowerShell 生成 SSH 密钥对

  1. 以管理员身份打开 PowerShell(右键开始菜单 → 选择 Windows PowerShell (管理员))。

  2. 执行密钥生成命令:

    PowerShell 复制代码
    ssh root@192.168.3.150
    • -t rsa:指定密钥类型为 RSA

    • -b 4096:密钥长度,安全性更高

  3. 命令执行后会出现 3 次提示,全部按回车默认配置:

    • 提示 1:Enter file in which to save the key → 密钥保存路径(默认 C:\Users\你的用户名.ssh\id_rsa)

    • 提示 2:Enter passphrase → 密钥密码(留空 = 无密码,直接回车)

    • 提示 3:Enter same passphrase again → 再次确认密码(留空直接回车)

  4. 生成成功后,C:\Users\你的用户名.ssh\ 目录下会有 2 个文件:

    • id_rsa:私钥(本地保存,绝对不能泄露)

    • id_rsa.pub:公钥(需要上传到 Linux 服务器)

步骤 2:将公钥上传到 Linux 服务器

推荐 2 种方法,优先用方法 1(更便捷)。

方法 1:用 ssh-copy-id 自动上传(推荐)
  1. 在 PowerShell 中执行以下命令,替换为你的 Linux 服务器信息:

    PowerShell 复制代码
    ssh-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
  2. 首次执行会提示确认服务器指纹,输入 yes 回车,然后输入 Linux 服务器的密码 ,回车后公钥会自动上传到 Linux 服务器的 ~/.ssh/authorized_keys 文件中。

方法 2:手动复制公钥(备用,适用于 ssh-copy-id 不可用场景)
  1. 在 Win11 中打开 C:\Users\你的用户名.ssh\id_rsa.pub 文件,全选复制所有内容。

  2. 登录 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

常见问题排查

  1. 权限错误 :Linux 服务器的 ~/.ssh 目录权限必须是 700,authorized_keys 必须是 600,否则 SSH 会优先要求密码登录。

  2. SSH 服务未开启 :Linux 服务器执行 sudo systemctl start sshd 启动服务,sudo systemctl enable sshd 设置开机自启。

  3. 防火墙拦截 :Linux 服务器放行 22 端口,例如 sudo ufw allow 22(UFW 防火墙)。


相关推荐
KING-WU5129 小时前
Linux 工具之Make 与 Makefile
java·linux·服务器
Lsetea10 小时前
OpenSSL报certificate is not yet valid:error 9与notBefore时间排查
linux·运维·https·ssl证书·openssl
魔法阵维护师10 小时前
Linux 命令行入门踩坑记录:从 VMware 装系统到文件管理
linux·运维·服务器
Apipi*10 小时前
30天速通Linux 第七章进程间通信
linux·运维·服务器
emo_2b10 小时前
Pycharm配置conda解释器时遇到的问题及解决方法
linux·pycharm·conda
人生百态,人生如梦11 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
byte轻骑兵11 小时前
【BlueZ】hciconfig 工具:蓝牙适配器管理实操 + 源码实现基础
linux·bluez·电脑蓝牙·嵌入式蓝牙
SKH.11 小时前
Linux驱动-系统移植
linux·服务器
根目录下的猫11 小时前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
yunwei3712 小时前
eBPF 入门实践教程十七:编写 eBPF 程序统计随机/顺序磁盘 I/O
linux·后端·性能优化