热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Linux服务器上安装和使用SFTP?

SFTP或SSH文件传输协议是一种在两台计算机之间安全传输数据的方法。它是运行在SSH协议之上并利用其安全性并完全支持其身份验证的FTP。现在,建议使用SFTP而不

SFTP 或 SSH 文件传输协议是一种在两台计算机之间安全传输数据的方法。它是运行在 SSH 协议之上并利用其安全性并完全支持其身份验证的 FTP。

现在,建议使用 SFTP 而不是旧的旧 FTP 或 FTP/S 协议。SFTP 默认是安全的,因为这就是 SSH 的工作方式。从安全的角度来看,SFTP 还可以保护您免受密码嗅探和中间人攻击 (MiTM)。

与 SSH 一样,SFTP 也使用加密和加密哈希函数保护您的数据完整性。此外,它还支持多种安全身份验证方法,包括密码和基于密钥的身份验证。此外,它减少了服务器对外部网络的开放端口,因为它与 SSH 协议在同一端口上运行。


先决条件

在本指南中,您将学习如何在 Linux 系统上设置 SFTP 服务器。此外,您还将学习 sftp 客户端的基本命令。

以下是当前的实施环境:


  • Linux 服务器 - 您可以使用 Debian、Ubuntu、CentOS、Fedora、Rocky 或任何其他 Linux 发行版。
  • 确保 OpenSSH 软件包在您的 Linux 系统上可用。
  • SFTP 客户端 - sftp 命令行或您喜欢的任何 GUI 客户端。

验证 OpenSSH 包

要设置 SFTP 服务器,您必须在 Linux 系统上安装 OpenSSH 软件包。几乎所有 Linux 分发服务器都默认安装了 OpenSSH 软件包。但是,如果您的系统上没有 OpenSSH 软件包,您可以从官方存储库安装它。


  1. 要确保在您的 Linux 系统上安装了 OpenSSH 软件包,请使用以下命令。

对于 Debian 或 Ubuntu 服务器,您可以使用下面的 dpkg 命令。

dpkg -l | grep ssh

下面是我们 Debian 系统的输出。

ii libssh2-1:amd64 1.9.0-2 amd64 SSH2 client-side library
ii openssh-client 1:8.4p1-5 amd64 secure shell (SSH) client, for secure access to remote machines
ii openssh-server 1:8.4p1-5 amd64 secure shell (SSH) server, for secure access from remote machines
ii openssh-sftp-server 1:8.4p1-5 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines

第一列“ ii ”表示已安装软件包。软件包“ openssh-sftp-server ”安装在 Debian/Ubuntu 系统上。

对于 RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux 用户,您可以使用如下 rpm 命令。

rpm -qa | grep ssh

创建组和用户

在这一步,您将为 SFTP 服务器创建一个新组和用户。该组内的用户将被允许访问 SFTP 服务器。并且出于安全原因,SFTP 用户无法访问 SSH 服务。SFTP 用户只能访问 SFTP 服务器。


  1. 执行以下命令创建一个新组’ sftpgroup '。

sudo groupadd sftpgroup

2.使用以下命令 创建一个新用户“ sftpuser ”。

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

详细选项:


  • -G : 自动将用户添加到’ sftpgroup '。
  • -d:指定新用户的主目录。
  • -s : 将新用户的默认设置为’ /sbin/nologin ',这意味着该用户无法访问 SSH 服务器。

  1. 接下来,使用以下命令 为用户“ sftpuser ”创建密码。

passwd sftpuser

输入您的强密码并重复,然后按“ Enter ”确认。

要添加更多用户,请重复第2 和第 3 阶段,最重要的是,所有 SFTP 用户必须在组 ’ sftpgroup ’ 中,并且不能通过 SSH 访问 shell。


设置 Chroot 监狱目录

创建新组和用户后,您必须为 SFTP 用户创建和配置 chroot 目录。


  1. 对于用户’sftpuser’,新的主目录将位于’/srv/sftpuser’。执行下面的命令来创建它。

mkdir -p /srv/sftpuser

  1. 要为用户’ sftpuser '设置chroot ,您必须将目录的所有权更改为用户root,但保持组可以读取和执行而没有写入权限。

使用以下命令将目录的所有权更改为用户“root”。

sudo chown root /srv/sftpuser

授予组读取和执行权限,但不能写入。

sudo chmod g+rx /srv/sftpuser

  1. 接下来,在“ /srv/sftpuser ”目录中创建一个新的“data”目录,并将该“ data ”目录的所有权更改为用户“ sftpuser ”。

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

到目前为止,下面详细介绍了 SFTP 用户目录的配置。


  • 目录“ /srv/sftuser”是默认的主目录。
  • 用户 ’ sftpuser '不能写入目录 ’ /srv/sftpuser ',但可以读取该目录中的内容。
  • 用户’ sftpuser ‘可以将文件上传到目录’ /srv/sftpuser/data '的SFTP服务器。

在 SSH 服务器上启用 SFTP

要在 OpenSSH 上启用 SFTP 服务器,您必须编辑 SSH 配置“/etc/ssh/sshd_config”。

1.使用 nano 或 vim 编辑 ssh 配置“ /etc/ssh/sshd_config ”。

sudo nano /etc/ssh/sshd_config

2.注释以下配置以禁用独立的“ sftp-server ”功能。

#Subsystem sftp /usr/lib/openssh/sftp-server

  1. 将以下配置粘贴到该行的底部。

Subsystem sftp internal-sftpMatch Group sftpgroupChrootDirectory %hX11Forwarding noAllowTCPForwarding noForceCommand internal-sftp

保存配置并退出。

详细配置:


  • 我们不使用子进程“ sftp-server ”,而是使用“ internal-sftp ”。
  • 为组“ sftpgroup ”启用了 SFTP 服务器。

  1. 要应用新配置,请使用以下命令重新启动 ssh 服务。

sudo systemctl restart sshd

SFTP 服务器已准备就绪并可访问,它与 SSH 服务在同一端口上运行。


访问 SFTP 服务器

在客户端,我们将使用默认安装在大多数 Linux 发行版上的 sftp 命令行。但是,您也可以使用其他命令行客户端或 GUI FTP 客户端,例如FileZilla、Cyber​​duck等。


  1. 要连接到 SFTP 服务器,请执行 sftp 命令,如下所示。

sftp ftpuser@SERVER-IP

如果您的 SFTP 和/或 SSH 服务器在自定义端口上运行,您可以使用 sftp 命令,如下所示。

sftp -P PORT ftpuser@SERVER-IP

键入“ sftpuser ”的密码。


  1. 连接到 SFTP 服务器后,执行以下命令。

显示当前路径工作目录并列出所有可用的文件和目录。

pwd
ls


  1. 将本地文件上传到SFTP服务器的’/ ‘目录,会出现’ permission denied ',因为是chroot目录。

put /path/to/file/on/local /

  1. 将本地文件上传到SFTP 服务器上的目录“ /data/ ”。如果您的配置正确,您的文件将被上传到“ /data/ ”目录。

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/


  1. 现在使用以下命令 检查“ /data ”目录中的可用文件。

ls /data/

您将看到您的文件上传到 SFTP 服务器。


结论

恭喜!您已成功在 Linux 系统上配置 SFTP 服务器。这种类型的配置可以应用在大多数安装了 OpenSSH 的 Linux 系统上。此外,您还学习了如何为 SFTP 用户设置 chroot 目录并学习了基本的 sftp 客户端命令。


推荐阅读
  • 【Linux】CentOS 7 远程连接指南:高效安全的远程管理方法
    在 CentOS 7 中实现高效且安全的远程管理,本文详细介绍了如何检查和安装配置 OpenSSH。首先,通过 `yum list installed` 命令检查系统是否已安装 OpenSSH,若未安装,则使用 `yum install openssh-server` 进行安装。随后,配置 SSH 服务以确保其安全性和稳定性,包括修改默认端口、禁用 root 登录等关键步骤。此外,还提供了常见问题的解决方案,帮助用户顺利进行远程连接。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • TCP三次握手过程详解与图示解析
    本文详细解析了TCP三次握手的过程,并通过图示清晰展示了各个状态的变化。同时,文章还介绍了四次挥手的图解,解释了在TIME_WAIT状态中,客户端最后一次发送的ACK包的作用和重要性。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Linux Shell变量初探:初始值解析与使用指南
    本文探讨了Linux Shell中变量的基本概念及其在BASH中的应用。变量是用于存储可变数据的标识符,能够代表不同的值。文章详细介绍了BASH shell的主要优势,包括强大的命令编辑能力、自动补全功能、命令别名设置、作业控制以及前后台任务管理。此外,还涵盖了编程脚本编写和通配符的使用方法,为初学者提供了全面的指导。 ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
  • 西北工业大学作为陕西省三所985和211高校之一,虽然在农业和林业领域不如某些顶尖院校,但在航空航天领域的实力尤为突出。该校的计算机科学专业在科研和教学方面也具有显著优势,是考研的理想选择。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
author-avatar
北人南漂记
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有