Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > linux服务器设置sftp传输文件账号

linux服务器设置sftp传输文件账号的实现方式

作者:追逐梦想永不停

文章介绍了如何在Linux服务器上配置SFTP服务,并设置一个仅允许SFTP传输的用户,通过创建特定的目录和配置文件,可以实现文件的上传和下载,最后,使用FileZilla进行了测试,验证了配置的正确性

一、前言

linux自带sftp功能,只要配置一个账号,就能用sftp来上传下载文件。

当需要sftp服务器测试的时候,很好用,只要有linux服务器就行了,不用花钱买sftp软件。

二、sftp账号设置方法

1.登录你的linux服务器

2.创建父目录

sudo mkdir -p /home/sftp/sftpuser

这个目录当做用户目录。

3.创建用户,指定用户目录

# 创建用户 sftpuser,指定 home
sudo useradd -m -d /home/sftp/sftpuser -s /usr/sbin/nologin sftpuser

这里创建了一个nologin用户sftpuser,这个用户禁止ssh登录。

4.设置用户密码

sudo passwd sftpuser

这个是给sftpuser用户设置密码,输入后会提示你输入两次新密码。

5.给用户目录配置权限

sudo chown root:root /home/sftp/sftpuser
sudo chmod 755 /home/sftp/sftpuser

这里设置sftpuser目录属于root用户,权限是755.

6.配置上传目录

sudo mkdir -p /home/sftp/sftpuser/data
sudo chown root:root /home/sftp/sftpuser/data
sudo chmod 755 /home/sftp/sftpuser/data

这里再创建一个data目录,设置属于root用户,权限755,用来给用户上传文件用。

7.配置账号仅允许SFTP传输

sudo vi /etc/ssh/sshd_config

用这个命令打开配置文件,注意,然后在这个文件的末尾加上:

Match User sftpuser
    ChrootDirectory /home/sftp/%u/data
    ForceCommand internal-sftp
    PasswordAuthentication yes
    AllowAgentForwarding no
    X11Forwarding no
    PermitTunnel no
    AllowTcpForwarding no

其中设置了ChrootDirectory ,意思是以data目录为根目录;

PasswordAuthentication ,意思是允许账号密码登录(如果不设置,有可能只能用秘钥登录,就得看其他地方的全局配置了)。

8.保存配置文件

#先按ESC,然后输入这个,然后回车保存
:wq

9.重启配置文件

sudo systemctl restart sshd

10.准备测试

根目录只有root用户能创建文件夹,sftpuser不能创建,所以先创建几个测试用。

sudo mkdir -p /home/sftp/sftpuser/data/upload
sudo mkdir -p /home/sftp/sftpuser/data/download

sudo chmod -R 777 /home/sftp/sftpuser/data/*

这里创建了两个文件夹,upload和download,然后设置权限777,所有用户都能用。

11.使用FileZilla测试,输入服务器ip,用户名是sftpuser,密码是自己设置的用户密码,注意端口输入22。(sftp端口22)

如图,sftp连接后,以data作为根目录(用户看到就是/),其中是测试步骤创建的download文件夹与upload文件夹。

注意sftpuser用户不能直接在根目录里上传下载文件,需要在下级文件夹才行。(download文件夹与upload文件夹)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文