我想将 SSH 公钥复制到 Windows 上的远程设备。我没有使用 PuTTYgen,而是通过 PowerShell 使用 OpenSSH。我运行了
ssh-keygen -t rsa
它在我的 .ssh 文件夹中给了我一个公钥和私钥,但如果我尝试这样做
ssh-copy-id -i ~/.ssh/id_rsa.pub <name@machine>
我犯了同样的错误:
ssh-copy-id:术语“ssh-copy-id”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
也许 ssh-copy-id 命令是用于 Linux 的,但我能够运行一些其他用于 Linux 的命令。
如何将密钥从 Windows 笔记本电脑复制到远程计算机? 在没有 PuTTYgen 之类的应用程序的情况下,是否可以在 Windows 中执行此操作?
答案1
(假设 id_rsa.pub 存在,就像之前用“ssh-keygen -t rsa”生成的那样)
这句话和下面这句话几乎一模一样:巴洛普没有 cygwin,提到使用 windows 原生 ssh 也可以正常工作......
C:\\> type %USERPROFILE%\\.ssh\\id_rsa.pub | ssh user@host "cat >> .ssh/authorized_keys"
答案2
您实际上要做的就是将 id_rsa.pub 文件的内容添加到 Linux 主机上的 ~/.ssh/authorized_keys 文件中。(您可能需要运行“systemctl restart ssh”。)
然后在您的 Windows 机器上使用 -i 参数:
ssh -i {私钥文件路径}\id_rsa {name}@{machine}
如果您使用了密码,系统将提示您输入密码,否则它将让您直接进入。
答案3
我已经安装了 cygwin,它有 ssh 并且包含 ssh-copy-id(顺便说一下,这是一个脚本)。
$ which ssh-copy-id
/usr/bin/ssh-copy-id
顺便说一句,如果您遇到了类似的错误,那么简化的基本故障排除步骤就是尝试$ ssh-copy-id <ENTER>
,因为您知道它与您在 ssh-copy-id 后输入的所有参数都无关。
本文提到了 ssh-copy-id 的手动方法 https://chrisjhart.com/Windows-10-ssh-copy-id/
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {IP-ADDRESS-OR-FQDN} "cat >> .ssh/authorized_keys"
他举了一个例子
PS C:\Users\Christopher> type $env:USERPROFILE\.ssh\id_rsa.pub | ssh 192.168.30.31 "cat >> .ssh/authorized_keys"