如何:使用 scp 将公钥从 linux(客户端)附加到 Windows(运行 openssh 的服务器),位于 c:\ProgramData\ssh\administrators_authorized_keys 中

如何:使用 scp 将公钥从 linux(客户端)附加到 Windows(运行 openssh 的服务器),位于 c:\ProgramData\ssh\administrators_authorized_keys 中

我正在尝试以管理员用户身份将客户端密钥从 Linux(Ubuntu) 复制到 Windows 服务器。
到目前为止,我可以通过以下步骤来实现这一目标:

我在 linux 中使用 bash,在 windows 中使用 powershell 7.3.4 作为管理员。

  1. 将 Linux 客户端的公钥复制到 Windows 服务器:
    scp ~/.ssh/public_key.pub Admin@WindowsServer:__PROGRAMDATA__/ssh/
  2. ssh 进入 Windows 服务器并检查是否存在administrators_authorized_keys文件,C:\PROGRAMDATA\SSH\
    如果没有,则创建:
    New-Item -Force -Path c:\PROGRAMDATA\ssh\administrators_authorized_keys
  3. 设置administrators_authorized_keys文件的权限:
    icacls C:\PROGRAMDATA\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
  4. 将 public_key.pub 内容追加到administrator_authorized_keys中。
    Get-Content C:\ProgramData\ssh\public_key.pub | Add-Content C:\ProgramData\ssh\administrators_authorized_keys

现在该administrators_authorized_keys文件已创建并配置完毕,我正在尝试使用一个不同的 Linux 客户端将其公钥附加到此 Windows 服务器(已配置) ,并在 ONE-LINE 中administrators_authorized_keys使用。scp

我尝试过这样的操作:
scp Linux2Win_key.pub Admin@WindowsServer:__ProgramData__/ssh/ ; Get-Content C:\ProgramData\ssh\Linux2Win_key.pub | Add-Content C:\ProgramData\ssh\administrators_authorized_keys
复制公钥文件但不将其附加到administrator_authorized_keys文件中。出现错误:
-bash: Add-Content: command not found
-bash: Get-Content: command not found
然后我尝试了此操作: scp Linux2Win_key.pub Admin@WindowsServer:__ProgramData__/ssh/ ; cat __ProgramData__/ssh/Linux2Win_key.pub >> __ProgramData__/ssh/administrators_authorized_keys
类似的结果,公钥文件被复制但未附加到administrator_authorized_keys文件中。出现错误:
-bash: __ProgramData__/ssh/administrators_authorized_keys: No such file or directory

想法:
看起来 scp 只能复制文件,而 ssh-copy-id 在 Windows 中不起作用,尽管可以启用 openssh 并且可以在 Windows 中使用 ssh。

如果您知道任何更好的方法(而不是手动操作)将公钥附加到Windowsauthorized_keysadministrators_authorized_keysWindows 中,请分享。谢谢
,我知道,这更多是一个 Windows 问题,我已经尝试在其他地方询问。
如果我在 linux/unix 论坛中提出这个问题冒犯了任何人,我很抱歉。

答案1

看来我只是缺少引号!

使用scp命令时,后面的Admin@WindowsServer:内容必须用引号引起来。

scp Linux2Win_key.pub Admin@WindowsServer:'__ProgramData__/ssh/ ; Get-Content C:\ProgramData\ssh\Linux2Win_key.pub | Add-Content C:\ProgramData\ssh\administrators_authorized_keys'

这对我有用。

相关内容