如何在CentOS上设置SFTP服务器

本教程介绍如何在CentOS上设置和使用SFTP服务器。 在我开始之前,让我解释一下SFTP代表什么,它是用什么来做的。 目前,大多数人都知道,我们可以使用普通的FTP来将数据从服务器传输,下载或上传到客户端或客户端到服务器。 但是这个协议被匿名入侵者容易地被黑客攻击(如果没有使用TLS),因为这些端口对任何人都是广泛开放的。 因此,SFTP已被引入作为另一个替代方案来满足加强安全级别的主要目的。

SFTP代表SSH文件传输协议或安全文件传输协议。 它使用与SSH打包的单独协议来提供安全连接。

初步说明

对于本教程,我使用的是32位版本的CentOS 6.4。 同样的步骤也适用于CentOS 7。 教程结果将显示如何向客户端提供对SFTP服务器的访问权限,但无法通过SSH登录到服务器本身。

2.安装阶段

与普通FTP不同,无需安装其他软件包即可使用SFTP。 我们只需要在服务器上安装时已经安装的预建的SSHd软件包。 因此,只需检查以确认是否已经具有所需的SSH包。 以下步骤如下:

跑:

rpm -qa|grep ssh

输出应该类似于:

[root@SFTP01 ~]# rpm -qa|grep ssh
openssh-5.3p1-84.1.el6.i686
libssh2-1.4.2-1.el6.i686
openssh-clients-5.3p1-84.1.el6.i686
openssh-askpass-5.3p1-84.1.el6.i686
openssh-server-5.3p1-84.1.el6.i686

就是这样,现在我们将介绍如何使SFTP配置。


配置阶段

一旦安装的所有先决条件完成,我们将逐步进入配置阶段。 为获得最佳实践,我们需要创建一个组和用户,以便我们可以管理所有将获得SFTP访问权限的用户。 但首先,我们创建一个名为data的附加文件夹。 以下步骤如下:

mkdir -p /data/shahrilk

基本上我正在尝试以上步骤是将一个单独的文件夹作为SFTP访问的主目录。 SFTP用户的所有用户目录将是此数据文件夹的子目录。

我们为SFTP用户创建一个组,下面是步骤:

groupadd sftpusers

然后创建一个用户并将其分配给SFTPUSERS组。 以下步骤如下:

useradd -g sftpusers -d /upload -s /sbin/nologin shahrilk
passwd shahrilk
Changing password for user shahrilk.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.


以下是上述命令的说明:

  1. 我创建一个用户,并将用户包含在使用-g命令的sftpusers组中。
  2. 通过设置-d / upload命令,将用户的主目录分配给/ upload目录。 这意味着以后/ upload文件夹将在/ data / shahrilk / upload下。
  3. 我限制对/ sbin / nologin shell的访问,以确保用户只能使用SFTP协议而不是SSH。
  4. 我命名用户“shahrilk”。
  5. 设置用户“shahrilk”的密码。


现在让我们在/ data / shahrilk下创建/ upload文件夹,然后为文件夹分配适当的所有权。

chown -R shahrilk:sftpusers /data/shahrilk
mkdir -p /data/shahrilk/upload
chown -R shahrilk:sftpusers /data/shahrilk/upload

一旦完成,请验证目录/ data下的新文件夹是否存在,并且我们使配置正确。


[root@SFTP01 ~]# ls -ld /data/
drwx-----x 14 root root 4096 Aug 19 11:13 /data/
[root@SFTP01 ~]# ls -ld /data/shahrilk
drwxr-xr-x 4 shahrilk sftpusers 4096 Jan 19 2016 /data/shahrilk
[root@SFTP01 ~]# ls -ld /data/shahrilk/upload
drwxr-xr-x 2 shahrilk sftpusers 4096 Aug 30 08:42 /data/shahrilk/upload

[root@SFTP01 ~]# cat /etc/passwd|grep shahrilk
shahrilk:x:501:501::/upload:/sbin/nologin

现在配置SSH协议创建SFTP进程。 这可以通过编辑/ etc / ssh / sshd_config下的配置文件来完成。 以下步骤如下:

vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp

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

一旦完成重新启动SSH服务,下面是步骤:

service sshd status
openssh-daemon (pid 1468) is running...
service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]


4.测试阶段

现在一切都已经配置好了,所以让我们进行测试,以确保设置符合我们的目的。
我将使用另一台名为TEST01的服务器访问SFTP。 首先,我将验证SFTP服务器的端口。 为了做到这一点,我将使用nmap函数。 如果您的客户端服务器没有,您可以下载并安装它,如下所示:

yum list nmap
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Available Packages
nmap.i686 2:5.51-2.0.1.el6 OEL64
yum install nmap -y
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nmap.i686 2:5.51-2.0.1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================
Package Arch Version Repository Size
=================================================================================================================
Installing:
nmap i686 2:5.51-2.0.1.el6 OEL64 2.7 M
Transaction Summary
=================================================================================================================
Install 1 Package(s)
Total download size: 2.7 M
Installed size: 9.7 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : 2:nmap-5.51-2.0.1.el6.i686 1/1
Verifying : 2:nmap-5.51-2.0.1.el6.i686 1/1
Installed:
nmap.i686 2:5.51-2.0.1.el6
Complete!
[root@TEST01 /]# nmap -n SFTP01
Starting Nmap 5.51 ( http://nmap.org ) at 2016-08-30 02:27 MYT
Nmap scan report for SFTP01 (192.168.43.101)
Host is up (0.000085s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds


您会注意到,目前在我们的SFTP服务器上,唯一的开放端口是SSH 22.现在,我们尝试从TEST01客户端访问SFTP。 以下步骤如下:

[root@TEST01 /]# which sftp
/usr/bin/sftp
[root@TEST01 /]# sftp shahrilk@SFTP01
Connecting to SFTP01...
shahrilk@sftp01's password:
sftp> pwd
Remote working directory: /upload
sftp>

大! 现在我们的SFTP服务器可以从外部访问。 请注意,默认目录是/ upload。 这意味着SFTP只会将默认路径显示为/ upload,即使我们之前在SFTP服务器目录中进行的配置是/ data / shahrilk / upload。
现在让我们尝试从SFTP服务器目录获取一个文件到我们的测试客户端。 首先,让我们在/ data / shahrilk / upload下创建一个测试文件。 以下步骤如下:

cd /data/shahrilk/upload
touch testing_file.txt

然后回到我们的测试站点TEST01,看看我们是否可以获取并下载创建的文件。

[root@TEST01 /]# sftp shahrilk@SFTP01
Connecting to SFTP01...
shahrilk@sftp01's password:
sftp> pwd
Remote working directory: /upload
sftp> ls
testing_file.txt
sftp> get testing_file.txt
Fetching /upload/testing_file.txt to testing_file.txt
sftp> quit

优秀! 我们的SFTP测试已经成功,我们尝试使用用户shahrilk访问SSH。 如前所述,我们将配置设置为/ sbin / nologin,因此用户将无法使用SSH服务:

[root@TEST01 ~]# ssh shahrilk@SFTP01
shahrilk@sftp01's password:
^CConnection to sftp01 closed.

很好! 现在我们有一个安全的SFTP服务器启动并运行。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏