通过SSH将文件内容传输到远程文件

时间:2019-08-01 20:03:41

标签: powershell ssh

我正在尝试使用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主机上的默认外壳。

1 个答案:

答案 0 :(得分:0)

我通过在Get-Content之后删除管道并评估了用SSH运行的命令中的Get-Content调用来解决了这个问题:

ssh user@machine "'$(Get-Content .\.ssh\id_ed25519.pub)' | Out-File -FilePath ~\.ssh\authorized_keys -Append"