在Linux中设置SFTP服务器

时间:2020-03-05 15:29:38  来源:igfitidea点击:

什么是sftp?

SFTP代表SSH文件传输协议。

它是FTP的版本,它在顶部使用SSH。
它允许用户通过加密连接从Linux服务器上传和从Linux服务器上传和下载文件。
FTP在没有加密的情况下做同样的情况,这就是为什么SFTP这些天在FTP上首选。

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

在Linux上设置SFTP服务器

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

要执行步骤,我们需要具有sudoer权限。
因此,如果我们没有sudo权限,请联系系统管理员。
如果我们是那个人,请阅读在Ubuntu中创建sudo用户。

设置SFTP非常简单。
在进行之前,我们需要在客户端的服务器端和SSH包中安装OpenSSH。

我在一个单独的文章中详细讨论了在Ubuntu上设置了SSH,我只会提到这里的重要步骤。

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

sudo apt install openssh-server

我们还需要在系统上进行SSH来访问SFTP服务器。

sudo apt install ssh

完成此后,我们将拥有一切准备好设置SFTP。
这是三个步骤完成,我一对一会向你展示。

第1步:创建组,用户,目录

要安全地使用SFTP(或者任何其他服务),最好创建组和用户使用该服务并仅使用该服务。
"最好给一个特定实体的特定权利"。

如果要为SFTP访问和普通系统访问提供SFTP访问,请创建用户,使其可以根据服务识别它们。
例如,如果SENI用于普通系统访问,则SECISFTP可用于SFTP访问。
使用此方法将在管理方面更容易。

让我们使用groupadd命令创建一个名为"sftpg"的组:

sudo groupadd sftpg

让我们创建一个名为"seetisftp"的用户,并将他添加到上面的组并给他一个密码。

sudo useradd -g sftpg seenisftp 
sudo passwd seenisftp

在UserAdd命令中,-g选项告诉应添加用户的组。

我们可以列出Linux中的所有用户,并验证是否添加了新用户。

让我们假设我们希望将目录/数据/作为每个用户的SFTP和/数据/用户名的root。
因此,当用户通过SFTP登录时,它们应该是/data/username作为其默认目录(就像我们通过ssh登录Linux系统时在/home/username目录中)。
此外,假设它们可以从该目录中读取文件,但可以仅载载以上载目录。

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

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

可能混淆的一件事是将用户的目录所有权提供给root本身。
这是在SFTP中的CHOITING的强制性。
因此,请确保/数据/用户名的所有者是root。

截至目前,我们将用户命名为seatiSftp,使用组sftpg和设置为/data/seetisftp设置的访问权限。

第2步:配置SSHD_CONFIG

接下来是我们需要配置SSH服务器,以便在属于SFTPG组登录的用户时,他/她进入SFTP而不是我们通过SSH的普通shell。
将以下代码段添加到"/etc/ssh/sshd_config(如果尚未存在)。

匹配组SFTPG ChrootDirectory/Data /%U ForceCommand Internal-SFTP

在上面的段中,ChrootDirectory允许指定的目录作为目录树中的根("/"目录)节点。
登录用户无法看到该目录上面的任何内容。

因此,它将阻止当前用户通过SFTP访问其他用户的文件。
%U是用于在登录时使用当前用户名填充它的转义代码。
当SECISFTP登录通过SFTP时,他将在/data/sepisftp作为他的根目录。
他将无法看到它的任何东西。

第3步:重新启动服务

要使我们对SSHD_CONFIG LIVE进行的更改,请按如下方式重新启动服务。

sudo systemctl restart sshd

通过Linux命令行访问SFTP

我们可以使用通常与SSH一起处理的SFTP登录。

sftp Hyman@theitroad

示例SFTP命令

SFTP命令通常是以下格式。

COMMAND [SOURCE] [DESTINATION]

对于任何命令,参数可以是本地系统路径或者远程系统路径。
它们之间没有明确的可见区别。
在考虑参数是本地或者远程之后,我们可以在正常指定路径。

获取 - 从远程服务器下载到本地系统的内容。
下面的命令将远程文件postion.img下载到本地系统的~/图片目录。

GET poster.img ~/Pictures

PUT - 上传内容将本地系统形成为远程系统。
下面的命令将~/picture/postect2.jpg上传到我的上载目录中。

PUT ~/Pictures/poster2.jpg uploads/

RM - 删除远程系统中的文件。
这与RM命令非常相似。
我们可以从下面的命令中看到,删除上载/poster3.jpg的图像

RM uploads/poster3.jpg

上面的命令非常基本,足以探索FTP/SFTP服务器。
如果我们想了解更多,请使用help命令。