HCRM博客

如何在CentOS上使用SFTP进行文件传输?

CentOS上搭建SFTP服务详解

SFTP(Secure File Transfer PRotocol)是一种基于SSH协议的安全文件传输方式,在CentOS操作系统中,通过OpenSSH实现SFTP功能是一个常见且安全的选择,本文将详细介绍如何在CentOS上安装、配置和使用SFTP服务。

如何在CentOS上使用SFTP进行文件传输?-图1
(图片来源网络,侵权删除)

安装OpenSSH服务器

确保你的系统已经安装了OpenSSH服务器,如果没有安装,可以使用以下命令进行安装:

sudo yum install opensshserver

启动并设置SSH服务随系统启动自动启动:

sudo systemctl start sshd
sudo systemctl enable sshd

检查SSH服务状态,确保其正常运行:

sudo systemctl status sshd

创建SFTP用户和目录

为了限制用户只能使用SFTP进行文件传输,我们需要创建一个专门的SFTP用户,并将其登录shell设置为/sbin/nologin,禁止其通过SSH登录到服务器。

1、创建一个名为sftpuser的用户

    sudo useradd m s /sbin/nologin sftpuser

2、为该用户设置密码

如何在CentOS上使用SFTP进行文件传输?-图2
(图片来源网络,侵权删除)
    sudo passwd sftpuser

3、创建一个用于SFTP的根目录

    sudo mkdir /sftp
    sudo chown root:root /sftp
    sudo chmod 755 /sftp

4、在根目录下创建子目录,并设置权限

    sudo mkdir /sftp/sharedata
    sudo chown sftpuser:sftpuser /sftp/sharedata

配置SSH服务

我们需要修改SSH配置文件以启用SFTP功能。

1、复制系统SSH配置文件到用户目录

    sudo cp /etc/ssh/sshd_config /home/sftpuser/.ssh/sshd_config

2、编辑用户的SSH配置文件

    sudo vi /home/sftpuser/.ssh/sshd_config

在文件中添加以下内容,确保这些配置节放在最后,避免与前面的配置冲突:

如何在CentOS上使用SFTP进行文件传输?-图3
(图片来源网络,侵权删除)
    Match User sftpuser
        ChrootDirectory /sftp
        ForceCommand internalsftp
        AllowTcpForwarding no
        X11Forwarding no

3、修改SSH服务的启动选项

打开SSH服务的启动选项文件,通常位于/etc/systemd/system/sshd.service/usr/lib/systemd/system/sshd.service,找到并修改ExecStart行:

    ExecStart=/usr/sbin/sshd f /home/sftpuser/.ssh/sshd_config D $OPTIONS

4、重新加载并重启SSH服务

    sudo systemctl daemonreload
    sudo systemctl restart sshd

多SFTP用户配置

如果需要为多个用户指定不同的配置,可以为每个用户创建单独的配置文件,并在SSH服务的启动选项中指定这些文件。

为两个用户sftpuser1sftpuser2创建不同的配置文件:

1、复制配置文件

    sudo cp /etc/ssh/sshd_config /home/sftpuser1/.ssh/sshd_config
    sudo cp /etc/ssh/sshd_config /home/sftpuser2/.ssh/sshd_config

2、编辑每个用户的配置文件

    sudo vi /home/sftpuser1/.ssh/sshd_config
    sudo vi /home/sftpuser2/.ssh/sshd_config

根据需要添加相应的配置,

    Match User sftpuser1
        ChrootDirectory /sftp/directory1
        ForceCommand internalsftp
        AllowTcpForwarding no
        X11Forwarding no

3、修改SSH服务的启动选项

    ExecStart=/usr/sbin/sshd f /home/sftpuser1/.ssh/sshd_config f /home/sftpuser2/.ssh/sshd_config D $OPTIONS

4、重新加载并重启SSH服务

    sudo systemctl daemonreload
    sudo systemctl restart sshd

通过上述步骤,每个用户将使用自己的配置文件,可以分别定制他们的SSH行为。

测试SFTP连接

完成上述配置后,可以使用任何支持SFTP的客户端(如WinSCP、FileZilla等)连接到服务器,确保使用SSH协议(端口22)进行连接,并使用具有适当权限的用户凭据进行身份验证。

常见问题与解答(FAQs)

Q1: SFTP连接失败怎么办?

A1: 如果SFTP连接失败,首先检查以下几点:

确保SSH服务正在运行,并且监听正确的端口(默认是22)。

确保防火墙允许流量通过端口22。

检查用户是否被正确添加到系统中,并且密码正确。

查看系统日志(如/var/log/auth.log/var/log/secure)以获取有关错误的详细信息。

Q2: 如何更改SFTP用户的根目录权限?

A2: 要更改SFTP用户的根目录权限,可以按照以下步骤操作:

使用chown命令更改目录的所有者,将/sftp/sharedata的所有者更改为sftpuser

    sudo chown sftpuser:sftpuser /sftp/sharedata

使用chmod命令更改目录的权限,将/sftp/sharedata的权限设置为755:

    sudo chmod 755 /sftp/sharedata

确保目录的上级目录也是由root拥有,并且权限设置为755或更低。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/14767.html

分享:
扫描分享到社交APP
上一篇
下一篇