在 Linux 中设置 SFTP 服务器的指南

什么是 SFTP?

SFTP 代表 SSH 文件传输协议。 你猜对了。 它是在顶部使用 SSH 的 FTP 版本。 它允许用户通过加密连接向 Linux 服务器上传和下载文件。 FTP 在没有加密的情况下也做同样的事情,这就是为什么 SFTP 现在比 FTP 更受欢迎的原因。

让我们看看怎样在 Linux 系统上设置 SFTP 服务器。

在 Linux 上设置 SFTP 服务器

我在本教程中使用了 Ubuntu。 安装命令特定于 Ubuntu 和 Debian,但其余步骤可以在任何其他 Linux 发行版中执行。

要执行这些步骤,您需要具有 sudoer 权限。 所以如果你不 sudo 权,请联系您的系统管理员。 如果您是其中之一,请阅读有关创建 sudo Ubuntu 用户。

设置 SFTP 非常简单。 在开始之前,你需要有 开放式SSH 安装在服务器端,SSH 包安装在客户端。

我已经在另一篇文章中详细讨论了在 Ubuntu 上设置 SSH,我只在这里提到重要的步骤。

要在服务器中安装 OpenSSH,您可以使用以下命令:

sudo apt install openssh-server

您还需要在要访问 SFTP 服务器的系统上使用 SSH。

sudo apt install ssh

完成此操作后,您将准备好设置 SFTP。 它分三步完成,我将一一展示给您。

步骤 1:创建组、用户、目录

使用 SFTP (或一般的任何其他服务)安全,最好创建组和用户以使用该服务并且仅使用该服务。 “最好为一个特定实体赋予一项特定权利”.

如果您想授予 SFTP 访问权限以及正常的系统访问权限,请创建用户以便根据服务轻松识别他们。 为了 example, 如果 蘑菇 用于正常的系统访问然后 看到的ftp 可用于 SFTP 访问。 在管理方面使用这种方法会更容易。

让我们创建一个名为“文件格式” 使用 groupadd 命令:

sudo groupadd sftpg

让我们创建一个名为“ 并将他加入上述组并给他一个密码。

sudo useradd -g sftpg seenisftp 
sudo passwd seenisftp

在 useradd 命令中, -G 选项告诉组应该添加哪个用户。 您可以列出 Linux 中的所有用户并验证是否已添加新用户。

假设您要使用该目录 /数据/ 作为你的根 sftp/数据/用户名 对于每个用户。 所以当用户通过 sftp 登录时,他们应该在 /数据/用户名 作为他们的默认目录(就像你在 /home/用户名 SSH登录Linux系统时的目录)。 此外,假设他们可以从该目录读取文件但只能上传到 上传 目录。

让我们按如下方式创建目录并更改它们的访问权限和所有权(阅读 Linux 中的文件权限以了解更多信息)。

sudo mkdir -p /data/seenisftp/upload
sudo chown -R root.sftpg /data/seenisftp
sudo chown -R seenisftp.sftpg /data/seenisftp/upload

可能会混淆的一件事是将用户目录的所有权授予根目录本身。 这对于 SFTP 中的 chroot 是必需的。 因此,请确保所有者 /数据/用户名.

截至目前,我们有用户名为 看到的ftp 与团体 文件格式 并设置了访问权限 / 数据 / seeisftp.

第二步:配置sshd_config

接下来是您需要配置 ssh 服务器,以便每当属于 sftpg 组的用户登录时,他/她就会进入 sftp 而不是通过 ssh 获得的普通 shell. 将以下代码段附加到 /etc/ssh/sshd_config 如果还没有。

Match Group sftpg
        ChrootDirectory /data/%u
        ForceCommand internal-sftp

在上面的代码片段中,ChrootDirectory 允许将指定的目录作为目录树中的根(“/”目录)节点。 登录用户看不到该目录上方的任何内容。 所以它会阻止当前用户通过以下方式访问其他用户的文件 sftp. %你 是在登录时用当前用户名填充它的转义码。 什么时候 看到的ftp 通过登录 sftp,他将在 / 数据 / seeisftp 作为他的根目录。 他将看不到上面的任何东西。

第三步:重启服务

为了做出我们所做的改变 sshd_config live,重启服务如下。

sudo systemctl restart sshd

通过 Linux 命令行访问 SFTP

您可以像通常使用 SSH 一样登录 SFTP。

sftp [email protected]

示例 SFTP 命令

SFTP 命令通常采用以下格式。

COMMAND [SOURCE] [DESTINATION]

对于任何命令,参数可以是本地系统路径或远程系统路径。 它们之间没有具体的明显区别。 考虑参数是本地还是远程后,您可以正常指定路径。

得到 – 从远程服务器下载内容到本地系统。 下面的命令下载远程文件 海报.img 到本地系统的 〜/图片 目录。

GET poster.img ~/Pictures

– 将内容从本地系统上传到远程系统。 下面的命令上传 ~/图片/poster2.jpg 进入我的 上传 目录。

PUT ~/Pictures/poster2.jpg uploads/

R M – 删除远程系统中的文件。 这非常类似于 R M 命令。 您可以从以下删除图像的命令中看到 上传/poster3.jpg

RM uploads/poster3.jpg

以上命令非常基本,足以探索 FTP/SFTP 服务器。 如果您想了解更多,请使用 help 命令或使用 这个资源.

我希望本文能帮助您在 Linux 上设置 SFTP 服务器。

在评测中告诉我们您的 SFTP 文件系统设置是什么。 它是像本文中提到的还是池目录或其他任何东西?

如果您觉得这篇文章有用,请与您的朋友分享。 如果您有任何建议,请随时将它们放在下面。

相关阅读:

Posted in: LinuxTags: ,