Linux SFTP服务器配置与管理
前言
SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种通过加密的方式在两台计算机之间传输文件的安全协议,相较于传统的FTP服务,SFTP提供了更高级别的安全性和数据保护能力,本文将详细介绍如何在Linux系统上部署和管理SFTP服务器,以确保数据在传输过程中的安全性。
在配置SFTP之前,首先要规划并配置好SFTP数据存储目录,建议为SFTP数据存储目录单独挂载一个LVM逻辑卷,而不是直接挂载使用磁盘分区,使用逻辑卷的好处是方便后期动态调整SFTP数据存储目录空间大小,以及对数据进行快照等操作,以下是创建并挂载逻辑卷的步骤:
1、创建逻辑卷:lvcreate -L 10G -n sftpdata vgname
2、格式化逻辑卷:mkfs.ext4 /dev/vgname/sftpdata
3、挂载逻辑卷:mount /dev/vgname/sftpdata /sftpdata
4、修改/etc/fstab
文件,使系统启动时自动挂载该逻辑卷:/dev/vgname/sftpdata /sftpdata ext4 defaults 0 0
注意:SFTP数据存储目录的所属用户和组要配置为root:root
,权限配置为755。
二、配置sftp用户独立目录的sftp服务
1. 创建并配置sftp用户
创建用户组sftpusers
:sudo groupadd -f sftpusers
创建用户zhangsan
和lisi
,并指定用户所属组为sftpusers
:
sudo useradd -g sftpusers zhangsan sudo useradd -g sftpusers lisi
设置用户密码:
sudo passwd zhangsan sudo passwd lisi
设置用户密码永不过期:
sudo chage -m 0 -M 99999 -I -1 -E -1 zhangsan sudo chage -m 0 -M 99999 -I -1 -E -1 lisi
创建用户同名目录及数据存储目录data
:
sudo mkdir -p /sftpdata/zhangsan/data sudo mkdir -p /sftpdata/lisi/data
将数据存储目录data
的所属用户和用户组分别配置为zhangsan:sftpusers
和lisi:sftpusers
:
sudo chown zhangsan:sftpusers /sftpdata/zhangsan/data/ sudo chown lisi:sftpusers /sftpdata/lisi/data/
修改用户主目录为用户数据存储目录:
sudo usermod -d /sftpdata/zhangsan/ zhangsan sudo usermod -d /sftpdata/lisi/ lisi
2. 配置sshd_config文件
查看是否安装openssh-server服务:
apt list | grep openssh-server dpkg --get-selections | grep openssh-server
编辑SFTP配置文件/etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
添加以下内容至配置文件末尾:
Match User zhangsan ChrootDirectory /sftpdata/zhangsan ForceCommand internal-sftp PermitTunnel no AllowTcpForwarding no Match User lisi ChrootDirectory /sftpdata/lisi ForceCommand internal-sftp
三、配置sftp用户共享目录的sftp服务
1. 创建并配置sftp用户组
创建用户组sftpgroup
:sudo groupadd sftpgroup
创建用户zyfdsftp
并指定用户所属组为sftpgroup
:
sudo useradd -g sftpgroup -s /bin/false zyfdsftp
设置用户密码:sudo passwd zyfdsftp
2. 创建共享目录并配置权限
创建SFTP共享目录:sudo mkdir -p /data/sftpfile
将共享目录设置为用户主目录:sudo usermod -d /data/sftpfile zyfdsftp
创建上传子目录:sudo mkdir -p /data/sftpfile/upload
设置上传目录权限:
sudo chown zyfdsftp:sftpgroup /data/sftpfile/upload sudo chmod 777 /data/sftpfile/upload
3. 配置sshd_config文件
编辑SFTP配置文件/etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
添加以下内容至配置文件末尾:
Subsystem sftp internal-sftp Match Group sftpgroup ChrootDirectory /data/sftpfile ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
四、重启服务并测试
关闭Selinux策略:sudo setenforce 0
重启sshd服务:sudo systemctl restart sshd.service
在其他服务器上进行验证:sftp 用户名@IP地址
五、FAQs
Q1: SFTP服务器无法连接怎么办?
A1: 如果无法连接到SFTP服务器,请检查以下几点:
1、确保SSH服务已启动并正在运行:sudo systemctl status sshd
2、确保防火墙允许SSH流量:sudo ufw allow 22/tcp
3、确保Selinux已禁用或配置正确:sudo setenforce 0
4、确保配置文件路径正确且无语法错误:sudo vim /etc/ssh/sshd_config
5、确保目标目录存在且权限正确:sudo ls -ld /path/to/directory
6、确保网络连接正常,可以通过ping命令测试网络连通性:ping IP地址
Q2: 如何更改SFTP用户的根目录?
A2: 你可以通过修改sshd_config
文件中的ChrootDirectory
指令来更改SFTP用户的根目录,要将用户zhangsan
的根目录更改为/new/path
,可以在配置文件中添加或修改如下行:
Match User zhangsan ChrootDirectory /new/path ForceCommand internal-sftp PermitTunnel no AllowTcpForwarding no ```保存后重启sshd服务即可生效。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1270337.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复