我想在Linux上通过ssh加密通道将主机A中的netcat与使用dd重新映像的磁盘(从主机A复制到B)。
我应该在两端输入什么命令?
最佳答案
从源复制到目标运行sshd的目标:
dd if=/dev/sda " gzip | ssh root@target "gzip -d | dd of=/dev/sda"
当目标未运行sshd时,通过sshd_host从源复制到目标。
-
目标: nc -l -p 62222 | dd of=/dev/sda bs=$((16 * 1024 * 1024))
-
来源: ssh -L 62222:target:62222 sshd_host &
-
来源: dd if=/dev/sda | nc -w 3 localhost 62222
dd - if = 是来源, of = 是目的地, bs = 是块尺寸。不同的块大小可以提高性能。 16通常是一个相当合理的起点。您还可以使用 count = 来指示要复制的块数。
nc - -p 表示用于服务的端口。 -l 用于启动服务。 -w 设置在退出之前等待pipline中数据的时间。
ssh - -L 在远程主机上设置隧道。参数的格式为local_port:target_host:target_port。您的本地程序(nc)连接到local_port,此连接通过隧道传输并连接到target_host上的target_port。
定义的选项只是用于此的选项。请查看手册页以获取更多详细信息。
一些注意事项
-
如果您在LAN以外的任何地方执行此操作,我建议使用gzip或compress压缩数据流。 Bzip2也可以工作,但需要更多的CPU时间。第一个有一个使用示例。
-
如果未安装源分区或以只读方式挂载,则更好。如果不是,您将需要fsck目标图像。
-
除非其中一台机器有netcat而不是ssh,否则这里不需要netcat。那个案子看起来像是:
-
source machine dd -> nc -> ssh -> ssh tunnel -> sshd server -> nc on target -> dd
-
如果源和目标的大小相同,则
-
dd效果最佳。如果不是,目标必须是2中的较大者。
-
如果您使用的是ext2 / 3或xfs,则dump(或xfsdump)和恢复可能是更好的选择。它不会处理启动扇区,但是当目标和源的大小不同时它会起作用。
品略图书馆 http://www.pinlue.com/