linux搭建sftp服务器

linux搭建sftp服务器

目录

一、sftp服务器介绍

二、安装步骤



一、sftp服务器介绍

在开发的过程中,一定避免不了向服务器上传下载文件的操作,我们可以用ftp进行文件上传,但是ftp传输数据是不安全的,很多时候我们都是选择sftp进行上传下载文件。

sftp相对于ftp在数据传输的过程中对数据进行了加密,当然这也是有代价的,就是损耗了数据传输的一些效率,以此来保证数据的安全性。

使用ftp需要进行安装,但是使用sftp就无需进行安装,sftp基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。


二、安装步骤

先看下整体的操作步骤,然后分步骤讲解:

2.1 创建sftp用户组,查看是否创建成功

groupadd sftp
cat /etc/group

2.2 创建sftp用户mysftp,加入到sftp组中,同时修改mysftp用户密码

useradd -g sftp -s /bin/false mysftp 
passwd mysftp

2.3 新建一个目录,指定为mysftp用户的主目录

mkdir -p /sftp/mysftp
usermod -d /sftp/mysftp mysftp

2.4 编辑配置文件:vim /etc/ssh/sshd_config

注释掉这行Subsystem      sftp    /usr/libexec/openssh/sftp-server

新增下面几行,位置要在UseDNS no之后,或者末尾,建议末尾最好。

# 注释掉下面这行
# Subsystem      sftp    /usr/libexec/openssh/sftp-server

# 新增下面几行,建议放在末尾,后者UseDNS no之后,否则会sshd启动会失败
Subsystem       sftp    internal-sftp   
Match Group sftp  
ChrootDirectory /sftp/%u    
ForceCommand    internal-sftp    
AllowTcpForwarding no   
X11Forwarding no 

2.5 设置目录权限:

#文件夹所有者必须为root,用户组可以不是root

#权限不能超过755,否则会导致登录报错,可以是755

chown root:sftp /sftp/mysftp  
chmod 755 /sftp/mysftp  

2.6 新建一个upload目录供mysftp用户上传文件,目录所有者为mysftp所有组为sftp,所有者有写入权限,所有组无写入权限

mkdir /sftp/mysftp/upload  
chown mysftp:sftp /sftp/mysftp/upload  
chmod 755 /sftp/mysftp/upload

2.7 关闭selinux并重启sshd服务


setenforce 0
service sshd restart

2.8 测试:

1.其它服务器进行验证

sftp -P 端口 用户名@主机ip 

2.懒得用其它服务器验证的,还可以用xftp这个工具进行验证。

 

 

如果全部成功,sftp服务器就算配置完成了。

 

 

 

<think>好的,用户问的是如何在Linux系统中配置和搭建SFTP服务器。我需要根据提供的引用内容来整理步骤。首先,引用1提到使用Linux自带的internal-sftp,而引用2和3都涉及具体的配置步骤,比如创建用户、修改sshd_config、设置目录权限、关闭SELinux和防火墙,以及重启服务。 首先,我应该先确认用户的需求是搭建SFTP服务器,可能用户需要安全的文件传输,而SFTP基于SSH,所以默认端口22,这需要确保SSH服务已经安装并运行。然后,按照步骤,创建专门的用户和用户组,并指定家目录,这样可以隔离权限,提高安全性。 接下来,修改SSH的配置文件sshd_config,添加Subsystem设置,并配置Chroot目录,限制用户只能在自己的家目录下活动,这是关键的安全措施。然后需要处理目录权限,确保根目录属主是root,子目录属主是SFTP用户,这样才能正确应用chroot。 然后,关闭SELinux和防火墙可能是一个必要步骤,特别是对于新手来说,SELinux的配置比较复杂,容易导致权限问题,临时关闭可以避免这些问题。不过可能用户需要注意,如果是生产环境,可能需要更细致的SELinux配置,但教程里建议关闭,所以这里应该按引用中的步骤来。 最后,重启SSH服务并测试连接,确保配置生效。还需要提醒用户可能遇到的常见问题,比如权限错误或目录配置错误,并建议参考提供的视频教程。此外,生成相关问题的时候,需要考虑用户可能的后续疑问,比如安全优化、用户权限管理、日志查看等,这些能帮助用户进一步解决问题。</think>### Linux搭建SFTP服务器分步教程 SFTP(SSH File Transfer Protocol)是基于SSH的安全文件传输协议,配置步骤如下: --- **1. 创建专用用户组和用户** ```bash sudo groupadd sftpgroup # 创建用户组 sudo useradd -G sftpgroup -s /sbin/nologin sftpadmin # 创建不可登录用户 sudo passwd sftpadmin # 设置用户密码 ``` --- **2. 配置SSHD服务** 编辑配置文件: ```bash sudo vim /etc/ssh/sshd_config ``` 添加以下内容: ``` Subsystem sftp internal-sftp # 使用系统自带SFTP模块[^2] Match Group sftpgroup # 匹配用户组 ChrootDirectory /home/sftpadmin # 限制用户目录 ForceCommand internal-sftp # 强制执行SFTP协议 X11Forwarding no AllowTcpForwarding no ``` --- **3. 设置目录权限** ```bash sudo mkdir -p /home/sftpadmin/upload sudo chown root:sftpgroup /home/sftpadmin # 根目录属主必须为root[^3] sudo chmod 755 /home/sftpadmin sudo chown sftpadmin:sftpgroup /home/sftpadmin/upload ``` --- **4. 关闭SELinux(临时)** ```bash sudo setenforce 0 # 临时关闭SELinux ``` --- **5. 重启服务并测试** ```bash sudo systemctl restart sshd sftp sftpadmin@localhost # 测试连接 ``` --- **常见问题处理** - 连接报错`Write failed: Broken pipe`:检查Chroot目录权限是否为root所有 - 上传文件失败:确认子目录(如upload)属主是SFTP用户 - 详细配置演示可参考视频教程[^1]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值