如何在 Linux 上设置 SFTP 服务器

大多数人在需要将文件传输到 Linux 服务器或从 Linux 服务器传输文件时更喜欢 FileZilla、WinSCP 或其他 FTP 程序等实用程序。 SFTP 是原始 FTP 协议的安全替代方案。 它执行与其不安全版本大致相同的功能,但增加了一层加密。 为此,它使用为其提供加密功能的 SSH 协议。 在您的 Linux 系统上设置 SFTP 服务器涉及多个步骤,我们在此展示。

内容

什么是 SFTP?

SFTP(安全文件传输协议)是一种用于将文件从客户端传输到服务器的网络协议。 与 FTP(文件传输协议)不同,SFTP 利用 SSH(安全外壳)协议对发送的数据进行加密。 它由计算机科学家 Tatu Ylönen 和 Sami Lehtinen 开发,他们还负责 1990 年代 SSH 协议的开发。 但是,现代版本是由 IETF(互联网工程任务组)开发的。

它可以被描述为一个远程文件系统协议,尽管它的名字暗示它只执行文件传输操作。 当使用 SFTP 从客户端向接收服务器发送文件时,数据在发送到目的地之前会被加密。 如果发送的数据被“中间人”截获,则该第三方无法轻易解密。

安装 SSH 和 OpenSSH 服务器

我们正在通过安装 SSH 和 OpenSSH 服务器来开始设置 SFTP 服务器的过程。

大多数 Linux 安装已经默认安装了 SSH,但如果你的系统没有它,你可以使用 Advanced Packaging Tool 的 apt 命令:

安装 SSH 后,您可以通过运行 ssh 命令与 -V 旗帜:

您可以在 Debian 和 Ubuntu 系统上安装 OpenSSH 服务器,用于 example,通过使用 apt 命令:

您可以在 Arch Linux 上使用 pacman 命令:

为 SFTP 创建用户、组和目录

Linux 上的不同服务应该使用自己的用户、组和目录,这是一个常见的建议。

首先为 SFTP 的用户创建一个组。 这是通过使用 groupadd 命令:

您可以创建一个用户并将其添加到使用 useradd 命令及其 -g 标志,用于指定用户将加入的组:

创建用户后,使用 passwd 命令:

Sftp 用户密码更改

为新创建的用户创建默认目录:

使用 chown 命令赋予目录必要的权限:

配置 SSH 服务器

设置 SFTP 服务器的下一步是配置它将使用的 SSH 服务器。

编辑“/etc/ssh/”中的“sshd_config”文件,以便用户在连接到服务器时使用 SFTP shell 而不是 SSH 的 shell。

默认情况下,您可以使用许多 Linux 安装中常用的 Nano 编辑器轻松编辑文件:

找到文件底部并添加以下内容:

Nano 编辑器编辑 Sshd 配置

重启 SSH 服务:

(可选)修改SFTP端口

如果您想将 SFTP 服务器使用的端口从默认值 22 更改为您选择的选项,您需要再次编辑“sshd_config”文件。

再次使用 Nano 编辑器编辑文件:

在文件中找到将默认端口值 22 注释掉的行:

您可以删除用于注释该行的井号 (#) 符号并添加您选择的端口值。 就我而言,我将值更改为 1111:

现在只需保存文件

Nano 编辑器编辑 Sshd 配置端口号

并重新启动服务器:

登录和使用服务器

W 服务器已安装并配置好,可以使用了。 您可以通过 SSH 提供的加密会话轻松上传和下载文件。

在登录之前,看看提供的手册不会有什么坏处:

FTP手册

通过提供以下格式的用户名和服务器 IP 或主机名来登录服务器:

此外,您可以通过使用指定 SFTP 服务器使用的端口(默认为 22) -P 旗帜:

当您登录时,您会看到一个 SFTP shell。

通过键入查看手册 help.

Sftp 帮助命令 1

下载文件

要下载文件:

例子:

这将下载到您当前的目录——您在登录到服务器之前在本地的目录。 要下载到特定的本地目录:

要复制目录,您必须添加 -r 参数,代表递归,到命令。

sftp 复制目录

请记住为您要在本地创建的新目录添加一个名称,如本例中的“/home/username/Desktop/bin”。 如果你使用 get -r /bin /home/username/Desktop,文件将直接复制到桌面上。 请注意,t 是复制的文件,而不是目录本身。

上传文件

上传文件或目录遵循相同的原则。 唯一的例外是路径是相反的,这意味着您首先指定本地文件/目录,然后指定远程路径。

首先,使用 put 命令:

上传目录(递归)时,请记住上一节中的相同规则适用:实际上是目录中的文件被复制,而不是目录本身。 为要将这些文件复制到的目录指定一个新名称。

这会在远程端创建一个名为“bin”的新目录。

恢复传输并使用包含空格的路径

当您传输一个被中断的大文件时,您可以通过将前面的命令替换为 reputreget. 只需确保您使用上次使用的相同路径,以便源和目标完全匹配。

要恢复目录传输,只需添加 -r 范围:

如果文件路径包含空格,请将其放在引号内:

其他用途

您可以使用 ls 命令:

文件的权限也可以使用 chmod 命令:

此外,您可以使用 mkdir 命令创建一个新目录:

经常问的问题

1. 我需要安装 SFTP 客户端吗?

在大多数情况下不会,因为大多数 Linux 系统都默认安装了基于终端的 SFTP 客户端。

2.我可以使用公钥认证吗?

是的,您可以使用公钥身份验证而不是密码作为身份验证方法。 设置它相当简单,它为您的服务器提供了额外的安全性。

3. 我可以同时托管一个 SSH 服务器吗?

是的。 但是,您需要确保您的 SFTP 服务器没有使用与 SSH 服务器相同的端口。

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅