我想从 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
执行此操作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。
我假设您已经在本地 Windows 计算机上安装了 OpenSSH
安装 OpenSSH 时,应包含 scp 命令。只需在命令提示符下键入
scp
即可确保安装此程序。
您可以使用此命令:
首先将提示更改为工作目录,并确保您的 ssh 公钥位于该目录中。
cd /D %HOMEDRIVE%%HOMEPATH%"/.ssh" (CMD)
或
Set-Location -Path $Env:HOMEDRIVE$Env:HOMEPATH"/.ssh"
(PowerShell)
使用 scp 命令
scp -v -P {{port}} {{source}} {{userID}}@{{instanceIP}}:{{target}}
就你而言
scp -v "id_rsa.pub" user@host:/home/directory/
,然后输入您的密码。
如果您使用 PuTTY,则有类似的命令
pscp
。
您可以在目标机器上查看该文件。