为了在具有相同硬件的机器之间获得相同的设置,我将驱动器从一台克隆到另一台,然后进行 ip 和主机名配置以区分两台 Linux 机器。除了 scp 之外,一切似乎都运行良好。(机器之间的 NFS 甚至 ssh 都运行良好)
查看 scp -v 的结果,它似乎正确验证,但随后复制了 0 个字节。有什么办法可以解决这个问题吗?为机器生成新的 ssh 密钥是否可行?如果可以,我该怎么做?(机器级密钥,而不是用户级密钥)
答案1
您可以使用以下命令重新生成新的主机 ssh 密钥:
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
如果您使用的是 OSX,则位置实际上是 /etc/ssh_host_dsa_key。此外,如果您愿意,也可以用 rsa 替换 dsa。
答案2
你可能有一个条目/etc/hosts这使得克隆的机器认为它是原始机器。
如果这些是虚拟机,确保他们的虚拟网卡有不同的MAC地址。
答案3
我怀疑目的地存在一些问题,例如只读文件系统、损坏的文件系统、没有 sftp、没有目录等
但无论如何,我建议您绕过 scp 并使用 rsync,它比 scp 智能得多。
rsync -avx file_or_dir destination_host:somedir/
它将复制文件、目录、递归、恢复以及 ssh 连接内的所有内容,就像 scp 一样。当然,你必须在双方都安装 rsync。
选项“avx”包括:
- a -> 复制所有文件/目录/设备/等,包括时间、所有者和权限
- v -> 详细,显示正在复制的内容(使用 -P 显示复制的进度)
- x -> 只有一个文件系统。包含这个总是更安全的,以防您有其他挂载点