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)

大家都在看

  • 模拟MBR Grub故障修复

    1. MBR故障修复 破坏mrb 重启后镜像界面显示找不到引导系统, 连接光驱,进入紧急救援模式到shell字符界面还原备份 挂载硬盘并备份groub.conf文件 破坏grub并…

    Linux 2023年6月8日
    098
  • srec_cat 常用参数的使用

    下面介绍映像文件工具 srec_cat 的使用,如何通过相关参数实现自己需要的功能。 文件类型 在输入文件和输出文件文件时要指明文件类型,常用的如: test.hex -intel…

    Linux 2023年6月7日
    087
  • ssl证书的选型,你知道多少?

    介绍 目前互联网常用的HTTP协议是非常不安全的明文传输协议。而SSL协议及其继任者TLS协议,是一种实现网络通信加密的安全协议,可在客户端(浏览器)和服务器端(网站)之间建立一条…

    Linux 2023年6月6日
    082
  • shell md5sum

    md5sum out.a echo “fd_limit=$(ulimit -n), fd_used=$(ll /proc/4741/fd | wc -l)”…

    Linux 2023年5月28日
    089
  • phpredis中文手册——《redis中文手册》 php版

    将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。 这个命令类似于以下两个命令: O(1) SETRANGE SETRANGE key offset…

    Linux 2023年5月28日
    082
  • 全新UI西游H5决战天宫游戏详细图文架设教程

    前言 想体验经典Q版西游霸服快乐吗?想体验满级VIP的尊贵吗?想体验一招秒杀的爽快吗?各种极品炫酷时装、坐骑、翅膀、宠物通通给你,就在全新UI西游H5决战天宫! 本文讲解决战天宫架…

    Linux 2023年6月7日
    0105
  • 使用Retrofit上传图片

    Retrofit使用协程发送请求参考文章 :https://www.cnblogs.com/sw-code/p/14451921.html 导入依赖 app的build文件中加入:…

    Linux 2023年6月8日
    0118
  • MySQL提权 通过UDF

    UDF是什么 命令执行 文本写入 Example: 远程写入 反弹Shell 提权 UDF是什么 参考:https://www.cnblogs.com/litlife/p/9030…

    Linux 2023年6月6日
    0108
  • php微信自定义分享链接,标题,描述,缩略图配置步骤

    微信公众号开发,自定义分享链接,标题,描述,缩略图接口 1、文件目录结构 2、后台代码: wxshare.php 注意:使用此代码,只需要把wxshare.php文件下面的appi…

    Linux 2023年6月7日
    098
  • 【.Net vs Java? 】 看一看二者的类有多像?

    1. 包(Package)、命名空间(NameSpace) 在Java中常用的是包(Package),较少提到NameSpace的概念。Java官方文档中这样说: 为了使类型更易于…

    Linux 2023年6月7日
    092
  • Android安卓进阶技术分享之AGP工作原理

    1.基础准备 在分析源码之前,我想你应该对 Android 打包流程已经有基础的了解,至少了解了下图的打包过程: 否则你有可能不了解下文中的专业术语。 2.AGP源码的打开方式 看…

    Linux 2023年6月13日
    0124
  • 打造一个红旗(redflag)Linux的基础镜像(base image)

    由于工作原因,想找一个红旗Linux的基础镜像(base image)。网上搜了一下,但没有现成的。起初是想找对应的centos版本来代替,但又怕有些莫名其妙的问题。 官方文档 不…

    Linux 2023年6月8日
    084
  • 三分钟永久激活WebStorm、PHPStorm、PyCharm、IntelliJ IDEA等JetBrains系列IDE

    前言 本文讲解如何永久激活WebStorm、PHPStorm、PyCharm、IntelliJ IDEA等JetBrains系列IDE,亲测有效,操作简单,一次激活,永久有效,一劳…

    Linux 2023年6月7日
    0141
  • Ajax

    前戏 概念 异步提交,局部刷新 最大的优点是在页面不刷新的情况下可以与后端进行数据交互 用户注册无需点击按钮内部也可完成数据交互 同步交互:客户端发出一个请求后,需要等待服务器响应…

    Linux 2023年6月7日
    084
  • 机器学习导引

    三种范式 常常定义一种损失函数,对训练集进行处理时使其最小化。该函数代表了系统输出对于正确输出的错误率,因为训练集的给定的输出是正确的 学习数值型预测函数,比如房价预测模型 在训练…

    Linux 2023年6月7日
    073
  • shell 配置文件节约空间

    shell 配置文件节约空间 sed 读取一个配置文件的的多个变量 Original: https://www.cnblogs.com/hshy/p/16451927.htmlAu…

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