ubuntu - 如何使用 SSH 文件传输协议(protocol)将文件从本地机器复制到服务器?

标签 ubuntu shell sftp

我有一台本地使用的 Ubuntu 9.10 台式机。我正在托管服务提供商上设置服务器。服务器将运行极小版本的 Ubuntu 服务器 LTS(只有 LAMP 和电子邮件服务器,没有 GUI)。

我想编写一个脚本(计划为 cron 作业),允许我将本地文件上传到服务器。出于安全原因,我想使用 [SFTP][1]。

我是 shell 脚本的新手 - 但我想 shell 脚本是执行此操作的方法(除非我弄错了)。

任何人都可以向我提供有关如何编写此类脚本的初始指示,以便安全地将本地文件上传到服务器吗?

理想情况下,我想在传输前压缩文件(以节省带宽)

[1]: http://SSH文件传输协议(protocol)

最佳答案

无论您将其拼写为“SECURE”还是“secure”,我们都无法读懂您的想法并判断您想要保护什么。所以我会给出一个基本的食谱,并告诉你它有什么好处。这可能应该全部转移到 super 用户。

  1. 学习基本的 bourne shell。相关教程无法放入 stackoverflow 答案中。
  2. 运行 ssh-keygen 生成 ssh key 对。因为你想从 cron 运行 scp,你不能使用密码,AFAIK。这意味着您必须非常确定您从中复制的机器是安全的,不会受到入侵者的侵害。
  3. 将公钥从 ssh key 对复制到目标机器上的 .ssh/authorized_keys。
  4. 通过运行“ssh target-machine”并成功登录 sans-password 来证明这是有效的。

现在,您可以制作一个使用 scp 命令进行实际复制的 shell 脚本。开始于:

#!/bin/sh
scp PATHNAME_OVER_HERE target-host:/PATHNAME_OVER_THERE

这可以防止基本密码 spy 和使用 telnet 随机连接到目标主机。如果源系统不安全,它就不安全,我不能保证 ssh 协议(protocol)的安全性,尽管它确实被广泛使用。

关于ubuntu - 如何使用 SSH 文件传输协议(protocol)将文件从本地机器复制到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810774/

相关文章:

php - EC2 Ubuntu mysql_connect 函数导致 500 Internal Server Error

java - OpenJDK 64 位服务器虚拟机警告 :Options -Xverify:none and -noverify were deprecated in JDK 13

bash - 将 perl while 循环更改为 shell

linux - 如何在 shell 脚本运行时启用某些命令

regex - 检查字符串是否与 Bash 脚本中的正则表达式匹配

java - 使用JSch使用多线程下载文件

c++ - Eclipse 内容辅助无法识别 std::thread,但可以正确编译

angular - Angular 7 应用程序在 Tomcat 上的图像路径

可以从外部以优雅的方式终止的 Python 脚本

python - 使用 pysftp,如何为连接指定超时值?