ssh-copy-id 在 Windows 上不起作用:没有这样的文件或目录

问题描述 投票:0回答:2

我想从 Windows 系统将公钥复制到我的服务器。 我遇到的问题是,我没有找到密钥的路径。 我尝试过类似的事情:

ssh-copy-id -i C:/Users/username/.ssh/mykey.pub user@serverIP

ssh-copy-id -i ~/.ssh/mykey.pub user@serverIP

结果总是

没有这样的文件或目录

我做错了什么?我在 Windows 10 上使用 Git Bash

执行此操作
windows ssh git-bash
2个回答
14
投票

Git 的 ssh 是 OpenSSH 的一个版本。您可以通过运行

ssh -V
下的
path\to\git\usr\bin
来确认。这是它在我的机器上的评估结果:

OpenSSH_7.7p1, OpenSSL 1.0.2o  27 Mar 2018

ssh-copy-id
脚本在内部执行一些 *nix shell 命令(如
exec
cat
等。您可以通过在文本模式下打开
path\to\git\usr\bin
下的命令来找到更多命令),因此它仅适用于 *nix 机器。这就是为什么
ssh-copy-id
下的
path\to\git\usr\bin
不是可执行文件的原因。

根据PowerShell/Win32-OpenSSH此问题

ssh-copy-id
在Windows上不受支持。

但是,还有一些替代方法可以完成同样的事情:

这个答案的powershell版本可以是

Get-Content $env:USERPROFILE\.ssh\id_rsa.pub | ssh <user>@<hostname> "cat >> .ssh/authorized_keys"

还有一个 python 脚本可以做同样的事情:ssh-copy-id for Windows


0
投票

我假设您已经在本地 Windows 计算机上安装了 OpenSSH

安装 OpenSSH 时,应包含 scp 命令。只需在命令提示符下键入

scp
即可确保安装此程序。

您可以使用此命令:

  1. 首先将提示更改为工作目录,并确保您的 ssh 公钥位于该目录中。

    cd /D %HOMEDRIVE%%HOMEPATH%"/.ssh" (CMD)

    Set-Location -Path $Env:HOMEDRIVE$Env:HOMEPATH"/.ssh"
    (PowerShell)

  2. 使用 scp 命令

    scp -v -P {{port}} {{source}} {{userID}}@{{instanceIP}}:{{target}}

    就你而言

    scp -v "id_rsa.pub" user@host:/home/directory/
    ,然后输入您的密码。

  3. 如果您使用 PuTTY,则有类似的命令

    pscp

您可以在目标机器上查看该文件。

© www.soinside.com 2019 - 2024. All rights reserved.