Sftp服务器搭建(linux)

ZONGYongfeng 2024-07-12 17:07:04 阅读 71

Sftp服务器搭建(linux)

一、基本工作原理

FTP的基本工作原理如下:

1)建立连接:客户端与服务器之间通过TCP/IP建立连接。默认情况下,FTP使用端口号21作为控制连接的端口。​​​​​​​

2)身份验证:客户端向服务器发送用户名和密码进行身份验证。如果是匿名访问,客户端可以使用公共用户名"anonymous",通常无需提供密码。​​​​​​​

3)控制连接:一旦身份验证成功,控制连接建立起来。通过控制连接,客户端发送各种指令给服务器,如上传文件、下载文件、创建目录等。​​​​​​​

4)数据连接:FTP使用不同的数据连接模式来传输文件。两种常见的模式是主动模式和被动模式。​​​​​​​

主动模式下,服务器主动地在 数据端口(默认端口号20) 上监听并等待客户端的连接请求。客户端向服务器发送请求后,服务器建立数据连接并传输文件。

被动模式下,服务器在一个随机的端口上监听,并将该端口信息发送给客户端。客户端随后连接到该端口,建立数据连接并进行文件传输。

5)文件传输:一旦数据连接建立,文件传输可以开始。客户端发送相应的指令,如上传文件(STOR)、下载文件(RETR)、删除文件(DELE)等,服务器根据指令执行相应的操作。​​​​​​​

6)控制连接关闭:文件传输完成后,控制连接可以关闭,释放资源。如果客户端需要进行其他操作,可以重新建立控制连接。

FTP通过建立控制连接和数据连接的方式实现文件传输。控制连接用于发送指令和进行身份验证,数据连接则用于实际的文件传输。这种分离的结构使得FTP能够灵活地进行文件管理和数据传输操作。

二、搭建步骤

1、安装SSH服务器:确保系统上安装了SSH服务器软件

2、创建SFTP用户组和用户:

(1)创建一个新的用户组,用于管理SFTP用户:

<code>groupadd GSFTP

(2)创建一个新的SFTP用户,并将其添加到My_sftp组中:

useradd -m -G GSFTP -s /bin/false ftpusers

passwd ftpusers # 为用户设置密码:Haiyi@1234

注释:

-m选项表示创建用户的主目录(main),如果不存在则会自动创建。

-G GSFTP选项表示将新用户添加到GSFTP组中。

-s /bin/false选项表示指定用户的登录shell为/bin/false,这意味着该用户无法登录到系统

最后,ftpusers是新创建的用户名。

3、设置SFTP的文件目录,可以执行以下操作:

mkdir /Net_ftp_share

chown root:GSFTP /Net_ftp_share

chmod 755 /Net_ftp_share

mkdir /Net_ftp_share/File_save

chown ftpusers:GSFTP /Net_ftp_share/File_save

chmod 755 /Net_ftp_share/File_save

1)首先建立Net_share目录,他的拥有者必须是root,并且其他用户不能拥有写入的权限(ChrootDirectory 这个选项要求的),即权限不能超过755(否则连不上);

2)很明显,这样,我们使用SFTP用户登录就只能进行下载操作,无法上传文件;

3)所以在Net_share目录下建一个用于上传和下载的目录,他的拥有者可以是SFTP用户,可以无限制操作该目录下的文件;

4、修改linux服务器的SFTP配置:

编辑/etc/ssh/sshd_config文件,注释其中的Subsystem sftp /usr/libexec/openssh/sftp-server,然后新增配置如下:

# 我的SFTP配置

Subsystem sftp internal-sftp # SFTP子系统使用内置的SFTP服务器

Match Group GSFTP # 以下配置仅适用于属于该组的用户

ChrootDirectory /Net_ftp_share # 目录限制

ForceCommand internal-sftp # 强制用户使用内置的SFTP服务器进行会话,而不允许执行其他命令

AllowTcpForwarding no # 禁止TCP转发

X11Forwarding no # 禁止X11转发

5、检查配置是否正确:sshd -t

6、重启SSH服务器:配置完成后,重新启动SSH服务器以使更改生效

sudo service ssh restart # 或 systemctl restart sshd

7、连接到SFTP服务器:现在,您可以使用SFTP客户端(如FileZilla、WinSCP或命令行的sftp工具)连接到搭建好的SFTP服务器

sftp username@server_ip

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。