通过终端将受保护的文件从远程计算机 scp 到本地计算机

通过终端将受保护的文件从远程计算机 scp 到本地计算机

因此,我正在尝试这个:

ssh -t -e none host "sudo cat /location/to/some/file.txt" | xclip -selection c

有了-t选项,我应该会收到输入密码的提示sudo。但是,我没有收到。如果没有它,权限就会被拒绝。

我在使用 -t 选项的 sudo 提示符下得到的是一个新行,我尝试在其中输入 sudo 密码,但什么也没有发生,过了一会儿,它显示Connection to host closed

有没有其他方法(仅使用终端)将受保护的文件从远程机器复制到本地。

编辑:

@Félicien 是对的。ssh由于管道 , 被屏蔽了|。密码询问提示也将通过管道并更改输入xclip

答案1

而@Félicien 的回答提供了问题的原因,我找到了解决方法,如何使用中间临时文件和命令来解决它tee

ssh -t -e none -i /path/to/id_rsa user@host "sudo cat /location/to/some/file.txt" | \
    tee /tmp/xclip.txt && \
    sed '1d' /tmp/xclip.txt | \
    xclip -selection c
  • 该命令的输出ssh将通过管道传输到tee将其写入新文件的命令/tmp
  • 然后,命令sed '1d'将输出新文件的内容(不包含第一行),[sudo] password for <user>:最后将此输出通过管道传输到xclip
  • 您可以通过添加函数来创建自定义命令,.bashrc以便将来的操作更加简单。

答案2

根据我的测试,该-t选项有效,但由于 |命令中的管道而被屏蔽。终端正在等待您输入密码,但您看不到它。

当终端似乎“等待”时,您可以输入密码,但风险是密码询问提示也会通过管道并改变输入xclip

相关内容