将客户端公钥复制到 Windows OpenSSH SFTP/SSH 服务器授权密钥文件的命令

Pan*_*ong 9 windows linux ssh openssh sftp

我有一台 Linux 机器,我需要 sftp 到 Windows SFTP 服务器。所以第一步,我在我的 Linux 机器上创建了我自己的id_rsa文件id_rsa.pub

然后我将文本复制id_rsa.pubid_rsa.pubSFTP 服务器中。

并且sftp连接工作正常。

但是,我想问一下将公钥从客户端复制到服务器的命令。我在谷歌搜索,我得到一个命令,它是:

ssh-copy-id -i id_rsa.pub ftp_user*@10.7.8.32
Run Code Online (Sandbox Code Playgroud)

但是我遇到了以下错误:

'exec' 不是内部或外部命令,也不是可运行的程序或批处理文件。该系统找不到指定的路径。

在此处输入图片说明

我相信这个权利有一些命令出口吗?而不是我手动将公钥复制到 SFTP 服务器。

SFTP 版本是 SFTP 协议版本 3。

Mar*_*ryl 5

ssh-copy-id脚本只能对* nix中的服务器(或* nix中仿真服务器),因为它内部的服务器(比如上执行一些* nix的shell命令execshumaskrmmkdirtailcat,等)。


您可以手动设置密钥。我知道您知道这一点,但由于存在细微差别,因此在 Windows 服务器上执行此操作时,为了其他读者的利益,我无论如何都会提及它。

主要步骤是:

  • .ssh在您的 Windows 帐户配置文件文件夹中创建该文件夹(通常在 中C:\Users\username\.ssh)。
  • authorized_keys在文件夹中创建文件并将您的公钥添加到其中。
  • 确保.ssh文件夹的 ACL和ACLauthorized_keys已设置,以便只有相应的 Windows 帐户对文件夹具有写入权限,并且文件和运行服务器的帐户具有读取权限。另请注意,管理员文件的位置在默认sshd_config文件中被覆盖为%ALLUSERSPROFILE%\ssh\administrators_authorized_keys.

有关详细信息,请参阅我的在 Win32-OpenSSH 上设置 SSH 公钥身份验证的指南。


如果您想从本地计算机执行此操作,可以使用sftp. 特别是如果您还没有注册服务器上的密钥,您可以将id_rsa.pub文件上传为authorized_keys文件:

$ sftp martin@example.com
martin@example.com's password:
Connected to martin@example.com.
sftp> mkdir .ssh
sftp> cd .ssh
sftp> put id_rsa.pub authorized_keys
Uploading id_rsa.pub to /C:/Users/martin/.ssh/authorized_keys
id_rsa.pub                                   100%  401   197.5KB/s   00:00
sftp> bye                  
Run Code Online (Sandbox Code Playgroud)

上面基本上就是ssh-copy-id,内部做了什么——除了ssh-copy-id追加之外authorized_keys,什么都是普通sftp不能做的。如果需要追加,可以下载authorized_keys到本地,追加到本地,重新上传回来。


或者,您可以使用(我的) WinSCP 客户端从另一台 Windows 机器设置密钥,使用它的Install Public Key into Server功能

另请参阅我对从 Windows 设置对 Linux 服务器的公钥身份验证(ppk 私钥)的回答