在过去担任 unix 管理员期间,我经常通过将文件传输到 stdout 并通过 SSH 管道传输该输出来远程传输文件。有时,我会在管道的另一端放置一个“tar -xfp -”,以此来传输具有权限的文件。今天我重新审视了这个策略,但有两个问题。第一个问题是我要复制到 Windows 机器,第二个问题是我无法以 root 身份 ssh 到我正在备份的服务器。Sudo 只能从 TTY 运行,因此无法以我的 nynpriviledged 帐户登录。
最后,有人找到了 root 密码,并发现允许基于密码的 root 登录。所以我很容易就创建了备份:
c:\> plink -batch -pw SECRET root@someServer tar --exclude=/sys --exclude=/dev --exclude=/proc -cjvvf - / > file.tar.bz2
但是,由于 Windows 机器运行 winsshd,我想知道是否可以将 tarball 从 unix 机器拉到 Windows 机器,而不是将其推送。我尝试的命令是:
tar --exclude=/dev --exclude=/sys --exclude=/proc -cjf - / | ssh [email protected] "type con > d:\foo.tar.bz2"
这导致文件在 Windows 机器上创建,但没有写入任何数据。有没有办法按照我想要的方式进行操作?
答案1
你不使用的原因是什么SCP? 假设您在 unix 机器上拥有 root 访问权限,似乎您应该能够通过几乎任何东西进行 scp。您应该能够通过 ssh 进入 unix 机器,发出命令:
tar --exclude=/sys --exclude=/dev --exclude=/proc -cjvvf - / > ~/file.tar.bz2
然后在 Windows 框中使用:
scp root@someServer:~/file.tar.bz2 .
(password prompt)