Ubuntu下搭建Sftp

本文介绍了SFTP,它是安全文件传送协议,能为文件传输提供安全加密方法。详细阐述了搭建SFTP的步骤,包括创建用户组、用户,设置文件目录及权限,修改ssh配置文件,重启服务等,还说明了验证连接的方法和目录权限设置的注意事项。

SFTP简介

     sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。(来自百度百科)

1、创建管理用户组和使用用户组

groupadd ssh-users

groupadd sftp-users

2、创建sftp登陆用户(禁掉其登陆shell权限)

useradd -g sftp-users -s /bin/false testuser  
修改密码:passwd testuser

3、创建sftp文件目录及要共享的目录、修改权限

mkdir -p /data/sftp/file

chmod 750 /data/sftp/file

将其改为root所有、用户组为sftp-users

chown root:sftp-users /data/sftp/file

4、修改ssh配置文件

vim /etc/ssh/sshd_config

在末尾加入
 

#只允许ssh-users及sftp-users通过SSH访问文件系统
AllowGroups ssh-users sftp-users
# 针对sftp-users用户
Match Group sftp-users
# 将/data/sftp设置为该组用户的系统根目录
ChrootDirectory /data/sftp
# 禁止TCP Forwarding和X11 Forwarding
AllowTcpForwarding no
X11Forwarding no
# 强制该组用户仅仅使用sftp
ForceCommand internal-sftp

5、重启ssh服务

sudo service ssh restart

验证连接:sftp testuser@ip

显示sftp>         

就成功了。

 

如果连接,显示类似:Read from remote host ip: Connection reset by peer原因如下,权限问题

注意事项:目录权限设置上要遵循2点:

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。

 

 

<think>嗯,用户现在问的是在Ubuntu系统上搭建SFTP的方法。我之前已经给过他一个详细的步骤,但用户可能还想再确认一下,或者需要补充信息。先看看他提供的引用内容有哪些关键点。 引用[1]提到搭建成功后的扩展和安全设置,引用[2]说明SFTP的用途和与其他工具的区别。引用[3]和[4]都提到了针对sftp用户组的额外配置,比如设置ChrootDirectory限制访问目录,禁止端口转发等安全措施。引用[5]则详细列出了安装openssh-server、允许root登录、用户配置和权限设置的步骤,还提到了客户端连接命令和传输文件时的权限问题。 用户上次的问题是关于搭建方法,这次应该还是需要明确的步骤。需要整合这些引用中的有效信息,尤其是安装步骤和配置细节。比如,安装openssh-server而不是sftp-server,因为引用[5]提到Ubuntu默认只装客户端,需要手动装服务端。另外,用户组配置和目录权限是关键,特别是ChrootDirectory的设置,这能增强安全性。 还要注意引用[4]中的Match Group配置,针对不同用户组应用不同规则,比如禁止TCP转发和强制使用SFTP。这些安全设置应该包含在步骤里。同时,引用[5]提到的重启SSH服务也很重要,否则配置不生效。 用户可能对配置文件的具体修改点不太清楚,所以需要明确列出需要修改的行,比如PermitRootLogin、Subsystem sftp的设置,以及Match块的应用。另外,目录权限容易出错,必须强调所有权和权限设置,否则连接时会报错,比如引用[5]中WinSCP上传失败的例子。 最后,测试步骤不能少,引用[5]中的连接命令和文件传输测试是验证配置是否成功的必要步骤。可能需要提示用户使用sftp命令或FileZilla这类工具测试,确保上传下载正常。 综合来看,应该分安装、配置用户和目录、修改SSH配置、重启服务、测试这几个步骤,每个步骤的关键点要标注清楚,特别是安全设置和权限问题,避免用户操作时踩坑。还要注意引用来源,把对应的引用标记加到相关步骤后面,方便用户查阅详细内容。 </think>在 Ubuntu 系统上搭建 SFTP 服务器主要通过配置 SSH 服务(`openssh-server`)实现,以下是详细的步骤和关键配置: --- ### **1. 安装 SSH 服务** ```bash sudo apt update sudo apt install openssh-server ``` > Ubuntu 默认已安装 `openssh-client`,但需手动安装服务端组件[^5]。 --- ### **2. 创建专用用户组与用户** ```bash # 创建用户组(可选,便于统一管理) sudo groupadd sftp_users # 创建用户并指定主目录(禁止登录Shell) sudo useradd -m -G sftp_users -s /usr/sbin/nologin sftp_user1 sudo passwd sftp_user1 # 设置密码 ``` > `-s /usr/sbin/nologin` 禁止用户通过 Shell 登录,仅允许 SFTP[^3][^5]。 --- ### **3. 设置根目录与权限** ```bash # 创建SFTP根目录(例如 /srv/sftp) sudo mkdir -p /srv/sftp/data sudo chown root:root /srv/sftp # 根目录所有权给root sudo chmod 755 /srv/sftp # 根目录权限需严格限制 sudo chown sftp_user1:sftp_users /srv/sftp/data # 子目录给用户写入权限 ``` > **关键点**:根目录(如 `/srv/sftp`)必须由 `root` 所有且权限为 `755`;用户上传目录(如 `data`)可赋予用户所有权[^3][^4]。 --- ### **4. 修改 SSH 配置文件** 编辑 `/etc/ssh/sshd_config`: ```bash sudo nano /etc/ssh/sshd_config ``` **添加或修改以下内容**: ```nginx # 启用内置SFTP子系统(替换原有Subsystem行) Subsystem sftp internal-sftp # 限制SFTP用户组访问(用户组名需与步骤2一致) AllowGroups sftp_users # 针对SFTP用户组的额外配置 Match Group sftp_users ChrootDirectory /srv/sftp # 限制用户到根目录 AllowTCPForwarding no # 禁用端口转发 X11Forwarding no # 禁用X11转发 ForceCommand internal-sftp # 强制仅使用SFTP ``` > **注意**:`ChrootDirectory` 路径必须为绝对路径,且用户无该目录写权限(需通过子目录上传)[^3][^4]。 --- ### **5. 重启 SSH 服务** ```bash sudo systemctl restart sshd ``` --- ### **6. 连接测试** 使用客户端连接: ```bash sftp -P 22 sftp_user1@服务器IP ``` 或使用图形工具(如 FileZilla、WinSCP),协议选择 **SFTP**。 --- ### **常见问题解决** * **连接失败/权限错误**:检查根目录所有权(必须为 `root`)和权限(必须为 `755`)[^4][^5]。 * **上传文件失败**:确保用户对子目录(如 `/srv/sftp/data`)有写权限[^5]。 * **增强安全性**:禁用密码登录改用 SSH 密钥,或限制 IP 访问(通过防火墙或 `sshd_config` 的 `AllowUsers`)[^1][^5]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值