通过 Cron 任务在互联网上传输文件的脚本

通过 Cron 任务在互联网上传输文件的脚本

我想在备份脚本中添加一些内容,以便通过互联网将文件传输到另一台服务器。

我的 cron 当前将数据库的 pg_dump 到本地机器上的文件中,然后我想将该文件推送到远程位置,它需要是安全的(考虑 SSH/SCP/SFTP,但我愿意接受建议)。

当我通过互联网时,我不想从远程服务器挂载目录,而且我的看法是这不是很安全。

两台机器都运行 ubuntu,一台运行 11.04,源机器运行 12.04.2。

此外,我想将文件推送到多个备份位置,但我假设一旦我有命令行,我就可以在脚本中冲洗并重复。

我研究过 scp 和 sftp,但似乎两者都需要以交互方式提供密码。

答案1

ssh-keygen您可以使用和在两台服务器之间实现 ssh-key ssh-copy-id。该配置允许无需密码scp即可ssh工作,并对数据进行加密。

答案2

“安全”与你使用的协议有关。如果你通过互联网上的 sshfs 安装目录,由于正常的 ssh 加密,它将非常安全。如果有人欺骗了服务器并且其指纹已更改,它甚至会警告你,这样你就不会被骗而意外将数据包上传到其他人的服务器。

您还可以尝试使用 VPN 从服务器建立到家庭网络的安全连接,反之亦然。然后,您可以随意使用不安全的东西,例如 nfs(不带sec=krb5p)并挂载目录。

您还可以尝试使用 NFS 和 Kerberos 5这个答案而不必担心使用 VPN,但是根据该答案,如果出现问题,公开这些端口可能会暴露漏洞。

scp 选项也不错,但我确实发现它会减慢速度,除非你有非常好的互联网连接、快速的服务器(就处理能力而言)和设置了 ssh 密钥。

我个人的解决方案是 VPN + nfs,并使用现有脚本转储到 nfs 挂载文件夹中,而该文件夹实际上位于另一台机器上。您甚至可以将文件夹设置为在服务器可用时自动挂载,并使用预共享密钥对 vpn 进行身份验证,因此无需干预。

适用于 Ubuntu 的 VPN:https://wiki.ubuntu.com/VPN

来自 arch linux 的 OpenVPN 操作指南页面:https://wiki.archlinux.org/index.php/OpenVPN

更多VPN 资源

相关内容