我正在尝试使用Powershell与远程服务器共享SSH公钥。通常,在Linux环境中,使用Bash,我将使用cat
和管道来附加文件的内容,如下所示:
cat ~/.ssh/id_rsa.pub | ssh user@machine 'cat >> ~/.ssh/authorized_keys'
但是,我正在使用Windows 10中的SSH功能在Windows 10主机之间进行通信,因此无法访问GNU实用程序。
相反,我正在尝试使用Powershell。我目前有以下Powershell代码:
Get-Content ~\.ssh\id_ed25519.pub | ssh user@machine "'$_' | Out-File -FilePath ~\.ssh\authorized_keys -Append"
此命令运行无错误,但远程计算机上的文件为空。我该如何将我的公钥附加到远程计算机上的authorized_keys
文件中?
我可能是从错误的方向来解决这个问题的;我大部分的shell脚本经验是在Linux上的Bash中进行的。如果有更清洁的Powershell解决方案,我希望能提供反馈!
澄清:我将PowerShell用作远程Windows主机上的默认外壳。
答案 0 :(得分:0)
我通过在Get-Content
之后删除管道并评估了用SSH运行的命令中的Get-Content
调用来解决了这个问题:
ssh user@machine "'$(Get-Content .\.ssh\id_ed25519.pub)' | Out-File -FilePath ~\.ssh\authorized_keys -Append"