轻松搭建安全高效的Linux SFTP服务器 (linux sftp 服务器)

随着互联网的普及,数据传输已经成为人们工作学习中不可避免的一个环节。然而,在数据传输的过程中,我们总是担心隐私泄露和信息被篡改等风险。作为一款支持安全文件传输的工具,Linux SFTP 服务器在数据传输领域发挥着重要的作用。本文将介绍如何。

一、安装OpenSSH

在开始之前,我们需要先安装OpenSSH软件包。一般情况下,你可以在你的Linux发行版主要软件源中获取OpenSSH。下面是安装 OpenSSH 的命令行安装指南:

以Debian/Ubuntu为例:

“`

apt-get update

apt-get install openssh-server

“`

以Fedora为例:

“`

dnf install openssh-server

“`

安装完成后,你可以通过以下命令验证OpenSSH:

“`

ssh localhost

“`

如果服务已经启动,你应该可以看到一个欢迎信息,代表服务正常运行。

二、配置sshd_config文件

在运行SFTP服务器之前,需要在sshd_config文件中进行一些重要的配置,以确保服务器的安全性。该文件的位置在/etc/ssh/sshd_config,不过在一些Linux发行版中,该文件可能位于不同的目录。

下面是sshd_config文件中有关SFTP的配置建议。

“`

Subsystem sftp internal-sftp

Match group sftponly

ChrootDirectory %h

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

“`

上述配置主要有以下几个作用:

* 将SFTP系统文件包装在内部SFTP子系统中,这将提高安全性并提供更好的性能。

* 在ChrootDirectory下,存储SFTP用户的目录被限制到他/她的家目录。

* 通过禁止 SSH 端口的转发来增加安全性。

* 禁用X11转发。

三、配置SFTP用户

完成了上述操作后,需要在系统上创建SFTP用户。采用创建系统用户的方式,我们需要使用以下命令创建一个用户:

“`

useradd -g sftponly -d /home/sftpuser -s /bin/false sftpuser

“`

对于上面的命令,请注意以下信息:

* -g选项将用户添加到sftponly组中,这是在sshd_config文件中配置的用户限制组。

* -d选项指定主目录,这通常是/home/sftpuser。

* -s选项指定shell程序,但使用/bin/false将其设置为无效,意味着此用户无法通过shell程序进行访问。

接下来,我们可以使用passwd 命令为用户设置密码,如下所示:

“`

passwd sftpuser

“`

将SFTP用户的SSH密钥添加到他们的家目录中。我们可以使用以下命令完成此操作:

“`

mkdir -p /home/sftpuser/.ssh/

vi /home/sftpuser/.ssh/authorized_keys

“`

在authorized_keys文件中,插入SFTP用户的公共SSH密钥。该文件的权限应设置为“600”(即只读),以确保文件只能由该用户访问。

四、启动sshd

在完成上述操作后,我们可以启动sshd并检查是否正确地配置了SFTP服务器。以下是在许多Linux发行版中启动sshd的命令:

“`

systemctl start sshd

systemctl status sshd

“`

如果你看到服务处于活动状态,你就可以通过以下命令到达服务器:

“`

sftp sftpuser@

“`

在登录后,你应该可以看到SFTP用户所属的目录,该目录被ChrootDirectory限制在家目录以下。

相关问题拓展阅读:

Linux(RH)如何禁止某些用户使用SFTP

Linux系统可以通过sshd的配置项,禁止某些用户sftp登陆,方法如下:

1、打开sshd的配置文件

vi/etc/ssh/sshd_config

2、修改该配置文件,增加或修改如下行

# 禁止用户user1登陆,多个用户空格分隔

DenyUsers user1

# 禁止用户组group1的所皮液有用户登录,多个空格分隔

DenyGroups group1

3、保存配置后,重启sshd

/etc/rc.d/init.d/sshd restart

#完成上面的配置后,就可以禁止用户或用户组的用户进行SFTP登录

4、配置完毕后,在其它linux机器上使用燃镇物如下命令进行测试

# 使用ssh测试

# ssh 

‘s 旅告password:

Permission denied, please try again.

# 使用sftp测试

# sftp 

‘s password:

Permission denied, please try again.

#Permission denied 授权被拒绝,已经实现禁用该用户使用sftp

可以用sshd的配置项:DenyUsers,AllowUsers, DenyGroups,AllowGroups

举个例子:

把你希望禁止使用使用sftp服务的雹兄用户都加入某个组比如xyz

然后在/etc/ssh/sshd_config设置

DenyGroups xyz

这样所有属于xyz的用户就没有登录ssh的权限了,源乎袭自然也没有使用sftp的权限了。

注意仅仅在sshd_config禁止掉sftp-server是不够的,因为只要用户顷迹还能通过

ssh登录就可以用其他user space 的工具如scp上传下载文件,效果其实跟sftp是一样的。

印象里 sshd 的访问,需要给用户加入 ssh 组。如果没有加入 ssh 组,用户是无法登陆没饥 ssh 的。当然这要看系统的具体行尘设计。

一般服务器专用的 Linux 系统都是这么设计的。你把用户移出 ssh 组就行了。

其实还有一个办法就是,ftp 单独使用自己的用户列表,而不是使用系统用户列表。但这样会降低用户 ID 的系统集成度。但 ftp 用户没有这个主机系统的 ID ,他们也就没有办法访问档察禅任何 ftp 之外的东西了。

关于linux sftp 服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 轻松搭建安全高效的Linux SFTP服务器 (linux sftp 服务器)