我正在尝试以管理员用户身份将客户端密钥从 Linux(Ubuntu) 复制到 Windows 服务器。
到目前为止,我可以通过以下步骤来实现这一目标:
我在 linux 中使用 bash,在 windows 中使用 powershell 7.3.4 作为管理员。
- 将 Linux 客户端的公钥复制到 Windows 服务器:
scp ~/.ssh/public_key.pub Admin@WindowsServer:__PROGRAMDATA__/ssh/
- ssh 进入 Windows 服务器并检查是否存在
administrators_authorized_keys
文件,C:\PROGRAMDATA\SSH\
如果没有,则创建:
New-Item -Force -Path c:\PROGRAMDATA\ssh\administrators_authorized_keys
- 设置administrators_authorized_keys文件的权限:
icacls C:\PROGRAMDATA\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
- 将 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_keys
或administrators_authorized_keys
Windows 中,请分享。谢谢
,我知道,这更多是一个 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'
这对我有用。