sftp配置

有很多方法,可实现在网络上分享文件。其中之一为FTP协议。但FTP通过明文传输数据,不安全。幸运的是,SSH协议族中包含了用于传输文件的SFTP协议。

事实上,任何远程主机的用户,通过SSH访问,均可以在远程主机与本地机器之间传输文件。如果我们只希望某个用户通过SFTP分享文件,像FTP那样,而不许可对方运行shell命令,如何操作?下面是我摸索出的方法,适用于运行Ubuntu Server的主机。

这里的原理很简单,即在远程主机上建立一个账户,将其shell设为nologin。再编辑SSH守护进程的配置文件,将该用户限制在某个目录。

前提条件

  • 具有远程主机的管理员账号
  • 服务器上已安装OpenSSH Server
  • 客户端上已安装SFTP客户端软件

详细步骤

我们希望所有SFTP用户都处于sftpusers组。首先添加该组:

再新建一个用户guestuser,将其加入sftpusers组,并设置其shell为nologin,其主目录为/incoming:

注意,nologin已暗示了,它不是一个可登录的shell,因此该用户不能运行shell命令。此外,通过下面的配置,该用户的主目录要被ChrootDirectory指令限制。

也可以配置已有用户到sftpusers,这里不再赘述。

通过以下命令打开SSHD配置文档:

找到这行Subsystem sftp /usr/libexec/openssh/sftp-server,将其注释掉,并在下方加上一行Subsystem sftp internal-sftp。结果如下:

接下来是关键部分:

ChrootDirectory /sftp/%u限制了,用户guestuser能看到的根目录是/sftp/guestuser/,其主目录是/sftp/guestuser/incoming/。该用户是无法看到/sftp/guestuser/目录外部的。这是限制文件系统访问的关键。

还要注意,如果上面几条指令位于文件末尾,则可以去掉Match All。否者一定要加上Match All,以结束Match Group sftpusers语句块,否者会有意料不到的结果哦。

分别执行下面的命令:

当然,不一定要遵循上面的文件结构啦。

4. 重启SSH守护进程

执行以下命令:

大功告成!打开你最喜欢的客户端软件,分享你的文件吧。

客户端软件

有很多客户端软件有SFTP功能。下面只列举几个好用、可靠且免费的软件。

SSH客户端的sftp命令,在Linux系统、BSD、macOS和Windows的Linux子系统上均可安装,且在大多数Linux发行版默认安装。缺点是只有命令行界面,不过常用的内置命令不多,且非常容易掌握。例如,对应服务器端的sftp内置命令为ls/pwd/cd/rm/mkdir/rmdir/rename,几乎就是常规命令的极简版。对应本地端的sftp内置命令有/lls/lcd/lpwd等,注意它们前面都有个字母l。上传文件用put,下载文件用get,直白得很。此外exit和bye能退出sftp,help是良师益友。

PSFTP是PuTTY的一个组件,非常轻量,可共用PuTTY主程序存储的会话,也能利用PAGENT等组件的功能。但与sftp命令一样,PSFTP只提供命令行界面,其操作并不直观。

FileZilla FTP Client是经典的FTP客户端,支持多种文件传输协议,兼容Windows、Linux和macOS等主流系统,具有直观的图形界面、标签页式会话,容易配置。其SFTP功能取自于PuTTY。

WinSCP基于PuTTY,其图形界面与Windows系统几近完美地集成。其它特性包括双面板、拖拽上传/下载、标签页式会话。

此外,notepad++, Visual Studio Code等编辑器都提供了相应的SFTP插件,可方便地编辑远程主机上的文件。

参考资料

如果需要配置多个用户对应多个连接端口如何修改配置?

只需要在配置文件配置多个端口即可

例如,开启1022和20162端口,如下:

Port 1022

Port 20162

再重启下服务即可

本文转载 至:https://jwnote.com/sftp/

Original: https://www.cnblogs.com/zbzSH/p/16729215.html
Author: zbzSH
Title: sftp配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612244/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Git简介

    Git是一个开源的分布式版本控制系统,是目前主流的版本控制系统,很多软件项目都会用它做源代码管理。Git的常用操作想必很多人都会,但是可能了解Git内部原理的人并不多。了解一些底层…

    Linux 2023年6月6日
    071
  • Docker centos7,宝塔

    拉取一个centos镜像 docker pull centos:centos7 运行一个容器 docker run -i -t -d –restart=always –name…

    Linux 2023年6月6日
    088
  • rocksdb列族笔记

    1、简介 列族(Column Families)是rocksdb3.0提出的一个机制,用于对同一个数据库的记录(键值对)进行逻辑划分。默认情况下所有的记录都会存储在一个默认列族里(…

    Linux 2023年6月7日
    099
  • [随记]-SpringMVC中的handler到底是什么东西

    HandlerMapping 初始化时候的 HandlerMapping 有,按顺序排列: requestMappingHandlerMapping beanNameHandler…

    Linux 2023年6月6日
    082
  • 了解Redis这个核心数据类型

    string 字符串 tring 类型是二进制安全的,即 string 中可以包含任何数据。 Redis 中的普通 string 采用 raw encoding …

    Linux 2023年5月28日
    089
  • 5.2 Vi和Vim之间到底有什么关系?

    我们知道,Vi 编辑器是 Unix 系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。 尽管 Vi 可能是世界上复杂…

    Linux 2023年6月7日
    086
  • 基于spring security创建基本项目框架

    SpringBoot建项目步骤 建表 新建项目 (package name可以自定义,整个项目只能在该包下) 选择可能有到的依赖 (别忘了勾选SQL中的Mybatis Framew…

    Linux 2023年6月7日
    074
  • redis的三种集群方式

    redis有三种集群方式:主从复制,哨兵模式和集群。 1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令…

    Linux 2023年5月28日
    077
  • MapReduce入门实例——WordCount

    摘要:MapReduce的IDEA配置及WordCount案例 Maven项目配置 创建一个空的Maven项目 打开根目录下的 pom.xml文件,参考配置: UTF-8 3.2….

    Linux 2023年6月8日
    090
  • jmeter学习记录–04–Beanshell

    一、什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;BeanShell是一种松散类型的脚本语言(这点和JS类…

    Linux 2023年5月28日
    0105
  • 记一次 android 线上 oom 问题

    背景 公司的主打产品是一款跨平台的 App,我的部门负责为它提供底层的 sdk 用于数据传输,我负责的是 Adnroid 端的 sdk 开发。 sdk 并不直接加载在 App 主进…

    Linux 2023年6月6日
    097
  • 实验一 密码引擎-4-国䀄算法交叉测试

    任务详情 0 2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名1 在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码…

    Linux 2023年6月8日
    088
  • mysql安装及访问配置

    例:https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz 使用原…

    Linux 2023年6月6日
    0102
  • 设计模式——–代理模式

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。 最简单的代理模式,分为三种角色: 抽象主题角色:代理类与被代理共同实现的接口,内部定义了最普通的业务类型。 具体主题角色:…

    Linux 2023年6月7日
    068
  • linux man 中文手册安装

    Linux Man (手册) linux man 中文手册安装 步骤 下载源程序 解压文件并进入该目录 unzip master.zip ;cd master 安装支持程序 sud…

    Linux 2023年6月7日
    073
  • Linux_shell基础

    注意, 这里在运行时一定要写成./test.sh,而不是 test.sh, 运行其它二进制的程序也一样,直接写 test.sh,Linux 系统会去 PATH(环境变量) 里寻找有…

    Linux 2023年5月27日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球