Skip to content

在 Windows 上使用 ssh-copy-id 命令

约 775 字大约 3 分钟

Windows

2025-03-21

在 Linux 和 macOS 系统中,ssh-copy-id 是一个非常便捷的工具,它可以轻松地将您的 SSH 公钥部署到远程服务器,从而实现无密码登录。

解决方案一:通过 Git Bash 使用 ssh-copy-id

步骤:

  1. 打开 Git Bash 终端
  2. 直接执行以下命令:
    ssh-copy-id username@remote_host
  3. 按照提示输入远程服务器的密码

这种方法的优势在于体验最接近 Linux/macOS 用户的习惯,无需额外配置。

解决方案二:PowerShell 一行命令实现

PowerShell 作为 Windows 的原生命令行工具,具有强大的脚本能力。我们可以用一行命令模拟 ssh-copy-id 的功能:

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这行命令做了以下几件事:

  • 读取您的公钥文件
  • 通过 SSH 连接到远程服务器
  • 确保 .ssh 目录存在并设置正确的权限
  • 将公钥添加到 authorized_keys 文件
  • 设置正确的文件权限

您甚至可以将此命令保存为 PowerShell 函数,添加到您的配置文件中,以便随时使用。

解决方案三:拥抱 WSL 的力量

Windows Subsystem for Linux (WSL) 让 Windows 用户能够运行完整的 Linux 环境,无需虚拟机或双启动。

步骤:

  1. 安装 WSL(如果尚未安装):

    wsl --install
  2. 启动您选择的 Linux 发行版

  3. 在 WSL 终端中使用原生 ssh-copy-id 命令:

    ssh-copy-id username@remote_host

WSL 的优势是提供了完整的 Linux 体验,如果您经常需要在 Windows 和 Linux 环境之间切换,这是最佳选择。

解决方案四:手动部署公钥

有时,最简单的解决方案是最直接的。您可以手动复制您的公钥到远程服务器:

  1. 在 Windows 上找到您的公钥(通常位于 C:\Users\YourUsername\.ssh\id_rsa.pub
  2. 打开文件并复制内容
  3. SSH 连接到远程服务器
  4. 编辑或创建 ~/.ssh/authorized_keys 文件:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys
  5. 粘贴公钥内容并保存
  6. 设置正确的文件权限:
    chmod 600 ~/.ssh/authorized_keys

虽然这种方法需要更多手动步骤,但它在所有其他方法不可行时是一个可靠的备选方案。

准备工作:生成 SSH 密钥对

无论选择哪种方法,您首先需要确保已经生成了 SSH 密钥对。如果尚未生成,可以在任何终端(PowerShell、Command Prompt、Git Bash 或 WSL)中运行:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

按照提示操作,建议使用默认位置和设置密码短语以增强安全性。

结语

虽然 Windows 原生不提供 ssh-copy-id 命令,但通过以上几种方法,您可以轻松实现相同的功能。根据您的工作环境和个人偏好,选择最适合您的解决方案。无论如何,摆脱密码输入的繁琐,让您的 SSH 连接更加安全和便捷。