![通过 sftp 将文件传输给其他人](https://linux22.com/image/84028/%E9%80%9A%E8%BF%87%20sftp%20%E5%B0%86%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E7%BB%99%E5%85%B6%E4%BB%96%E4%BA%BA.png)
其他人给我的数据集太大,无法通过电子邮件、Dropbox 等发送,所以我想我们可以使用 sftp 或 scp。但如果我不给她我机器的密码,她怎么能做到这一点呢?这是一次性的数据传输,所以我不想经历很多麻烦——如果工作量太大,我只会给她我的密码,然后在她完成文件传输后更改它。
答案1
您的机器可以通过互联网访问吗?
第一个障碍是您的机器可能根本无法通过互联网访问!
大多数客户端计算机无法直接通过 Internet 访问,因为它们没有公共 IP 地址。就像有一部手机,可以打电话,却不能被叫。出现这种情况的主要原因是 IP 地址的供应有限;除非您的 ISP 支持 IPv6 或者您的配置非常不典型,否则您家里只有一个 IP 地址,这就是您的家庭路由器的地址。您的计算机可以建立传出连接,因为家庭路由器提供网络地址转换功能。
大多数家庭路由器都可以配置为允许将传入连接路由到本地网络上的特定计算机。要允许传入 SSH 连接,请将端口 22 路由到您的计算机。有关如何执行此操作的信息,请参阅路由器的文档。
如果您运气不好并且您的 ISP 没有提供公共 IP 地址,您将无法建立传入连接。要检查您是否有公共 IP 地址,请连接到路由器的管理界面并检查其是否外部的地址位于私人范围(内部地址位于私有范围内,除非在非典型配置中)。
授予对您的计算机的 shell 或文件访问权限
允许某人访问您的计算机的(相对)简单方法是为他们创建一个用户帐户。使用普通用户帐户,他们将能够看到很多内容,但他们将无法修改您的文件(除非您竭尽全力使它们可供所有人写入),而且他们也不会能够查看私有目录中的文件(drwx------
权限)。
为了提高安全性,请将帐户配置为仅可用于通过 SFTP 操作特定目录中的文件。这有点困难(我希望 OSX 能够为此提供一个易于使用的 GUI,但显然没有);看在 OS X 中创建仅远程用户?或者如何在 Mac 上设置 SFTP 服务器,然后让朋友能够从 iPhone、iPad 或其他 iDevice 向该服务器上传文件以获得指示。
您需要启用远程访问。有一个OSX 知识库条目为了那个原因。仅启用一名应该具有远程访问权限的用户。不要为可能具有弱密码的帐户启用远程访问!
在帐户上设置一个随机密码,并告诉他们复制粘贴该密码并将其保存在文件中。不要将具有人为选择的弱密码的机器暴露在互联网上。您可以使用以下命令来生成密码:
</dev/urandom tr -dc A-Za-z0-9 | head -c 16; echo
逐个传输文件
所以,是的,通过互联网发送文件仍然很困难。
技术含量较低的解决方案是使用众多文件共享网站之一。他们通过广告赚钱,所以不要考虑访问没有广告拦截器的网站,并且要非常小心您点击的位置,因为他们可能会尝试向您提供恶意软件。下载文件后,检查文件是否正确:使用以下命令计算其 SHA-2 校验和
sha -a256 /path/to/file
在 OSX 上、sha256sum /path/to/file
在 Linux 上。
答案2
如果您不介意他们对系统上的其他用户进行 shell 访问,那么您可以创建一个新用户并为他们提供凭据。如果您在创建用户后这样做,则需要配置系统以在 chroot 中启动 SFTP。