所以,问题来了。我在远程计算机上有一个仅 root 可用的文件,以及仅私钥的无 root SSH 访问权限(不过我有 sudo )。我需要将该文件复制到本地计算机,并使其尽可能易于使用(别名或 shell 脚本),因为这将被不同的人多次使用。
这就是我的想法: 1. SSH 到远程计算机并将文件复制到我有权限的某个位置 2. 从本地计算机,对我刚刚复制的文件执行 rsync --remove-source-files 。
但我看不出有什么方法可以仅用一个命令来完成此操作。有没有?
答案1
我想我可以改进八位托尼给出的答案。
ssh -t user@target 'sudo cat /source/file' > output && chmod +x output
当涉及多个文件时,我发现帕克斯比 rsync 更容易使用,无论 rsync 对我来说有多频繁地“简化”。
ssh -t user@target 'cd /src && pax -w ./' | pax -r
HTH。
答案2
ssh -t user@target machine sudo cp /source/file /target/file
创建-t
一个伪 tty,以便 sudo 可以要求输入密码。该ssh
命令采用一个可选命令(sudo cp ....
在本例中),该命令在目标计算机上执行,然后断开连接。
系统将提示您输入sudo
密码(即用户@目标的密码)。
然后您可以运行rsync
.您可以在启动计算机上编写此脚本,只需在单个脚本中包含两行。