SFTP,即 SSH 文件传输协议( SSH File Transfer Protocol ),或者说是安全文件传输协议( Secure File Transfer Protocol )。SFTP 是一个独立的 SSH 封装协议包,通过安全连接以相似的方式工作。它的优势在于可以利用安全的连接传输文件,还能浏览本地和远程系统上的文件系统。
在很多情况下,SFTP都比FTP更可取,因为它具有最基本的安全特性和能利用 SSH 连接的能力,FTP是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。

1 |先决条件:

服务器 OpenSSH-Server 版本最低4.8p1,因为配置权限需要版本添加的新配置项 ChrootDirectory 来完成。

如何查看OpenSSH版本,命令如下:

$ ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

2 | 创建用户信息

添加用户组:

$ groupadd sftp

添加用户:

$ useradd -g sftp -s /sbin/nologin -M userrenwolecom

参数注解:

-g              # 加入用户组
-s # 指定用户登入后所使用的shell
/sbin/nologin # 用户不允许登录
-M # 不要自动建立用户的登入目录

设置用户密码:

$ passwd userrenwolecom

3 |创建用户目录并设置权限
  创建sftp主目录:

$ mkdir /data/sftp

设置sftp主目录权限:

$ chown root:sftp /data/sftp

文件夹所有者必须是root,用户组可以不是root。

$ chmod 744 /data/sftp

权限不能超过755但不包括755,否则会导致登录报错。

4 |创建上传目录并设置权限

在/data/sftp/主目录下创建uploads资料夹,并设置所有者是:userrenwolecom,用户组隶属:sftp,这样新增的帐号才能有上传编辑的权限。

$ mkdir -p /data/sftp/uploads
$ chown userrenwolecom:sftp /data/sftp/uploads

5 |修改sshd_config配置文件 

$ vim /etc/ssh/sshd_config

将此行注释掉,例如:

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

在此行下面添加如下内容:

Subsystem sftp internal-sftp       # 指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp # 匹配sftp组的用户,若要匹配多个组,可用逗号分开
ChrootDirectory /data/sftp/ # 限制用户的根目录
ForceCommand internal-sftp # 只能用于sftp登录
AllowTcpForwarding no # 禁止用户使用端口转发
X11Forwarding no # 禁止用户使用端口转发

重启SSH服务

$ systemctl restart sshd

6 |测试是否能够登录、上传、下载等操作
  在10.28.204.61服务器执行以下命令登录:

$ sftp -P 12012 userrenwolecom@10.28.204.62
userrenwolecom@10.28.204.62's password:
packet_write_wait: Connection to 10.28.204.62 port 12012: Broken pipe
Couldn't read packet: Connection reset by peer

报错,此问题是由于/data/sftp 目录权限分配不当所致,将此目录的所有者更改为root即可,用户组可root/sftp。

再次测试连接:

$ sftp -P 12012 userrenwolecom@10.28.204.62
The authenticity of host '[10.28.204.62]:12012 ([10.28.204.62]:12012)' can't be established.
ECDSA key fingerprint is SHA256:/YI/L4RT1QH7lkfxMCAkKnvniQslyUl15mOUKUo8K3k.
ECDSA key fingerprint is MD5:6d:b6:f3:93:8e:48:53:24:9d:5d:c2:2a:5f:28:f4:d2.
Are you sure you want to continue connecting (yes/no)? YES
Warning: Permanently added '[10.28.204.62]:12012' (ECDSA) to the list of known hosts.
userrenwolecom@10.28.204.62's password:【输入userrenwolecom用户密码回车】
Connected to 10.28.204.62.
sftp>

连接成功,现在测试上传一个文件到10.28.204.62服务器

上传

sftp> put /tmp/nginx_log_stat /uploads
Uploading /tmp/nginx_log_stat to /uploads/nginx_log_stat
/tmp/nginx_log_stat

下载

sftp> get uploads/nginx_log_stat /mnt
Fetching /uploads/nginx_log_stat to /mnt/nginx_log_stat
/uploads/nginx_log_stat 100% 7 1.1KB/s 00:00
sftp>

删除

sftp> rm /uploads/nginx_log_stat
Removing /uploads/nginx_log_stat

更多命令请参阅:

sftp> help

小结:

在配置过程中遇到比较奇怪的问题,我将 sshd_config 配置文件中的 Match Group sftp 修改为 Match User userrenwolecom ,重启sshd后,当前终端不会断开,新建终端输入正确密码后会出现SSH登录闪退(自动关闭终端)问题,不管是用PUTTY还是Xshell均是如此,后来我将用户修改成组后就正常了,具体原因尚未可知,不过修改为组效果是一样的。如果你知道什么原因还请指教。

CentOS configuration uses the SFTP server的更多相关文章

  1. 如何在 CentOS 7 上安装 Percona Server

    在这篇文章中我们将了解关于 Percona 服务器,一个开源的MySQL,MariaDB的替代品.InnoDB的数据库引擎使得Percona 服务器非常有吸引力,如果你需要的高性能,高可靠性和高性价比 ...

  2. FileZilla 客户端连接vsftp无法访问 Received unexpected end-of-file from SFTP server 解决之路

    首先在win通过ftp连接centos过程中,出现了2个问题,现在对此记录一下,方便后人遇到问题进行查阅 1.由于加密协议不同,需要在ftp客户端设置一下,支持ssh模式,具体自行百度: 2.在设置完 ...

  3. P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1

    P6 Professional Installation and Configuration Guide (Microsoft SQL Server Database) 16 R1       May ...

  4. Mac OS X 上启动 FTP/SFTP server,并设置 log level

    木易小伟的博客| 木易小伟的博客 2013-08-13 5708 阅读 FTP Log SFTP Mac OS 系统配置 1. 启动FTP Server: 命令行下,  sudo -s launch ...

  5. Linux Centos 6.6搭建SFTP服务器

    Linux Centos 6.6搭建SFTP服务器 在Centos 6.6环境使用系统自带的internal-sftp搭建SFTP服务器. 打开命令终端窗口,按以下步骤操作. 0.查看openssh的 ...

  6. CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址、服务启动等)

    CentOS Linux搭建独立SVN Server全套流程(修改svn仓库地址.服务启动等) 原 一事能狂便少年 发布于 2016/12/27 11:16 字数 1113 阅读 1.3K  收藏 0 ...

  7. Centos 6.x 搭建 Zabbix Server

      zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让 ...

  8. 在 Azure CentOS VM 中配置 SQL Server 2019 AG - (上)

    前文 假定您对Azure和SQL Server HA具有基础知识 假定您对Azure Cli具有基础知识 目标是在Azure Linux VM上创建一个具有三个副本的可用性组,并实现侦听器和Fenci ...

  9. Linux(CentOS)上配置 SFTP(附解决Write failed: Broken pipe Couldn't read packet: Connection reset by peer)

    #创建sftp组: groupadd sftp #创建一个用户sftpuser: useradd -g sftp -s /bin/false sftpuser #提示: /etc/group 文件包含 ...

随机推荐

  1. 微信跳一跳辅助JAVA 自动模拟点击

    工具:ADB 原理: 开始游戏后,使用ADB工具让手机截屏发送到电脑 分析图像中小人与目标中心点间的距离,根据一定比例计算出需要触屏的时间 使用ADB进行模拟点击(触屏)相应的时间,完成精准跳跃 程序 ...

  2. django 模版标签笔记

    一.模板变量笔记:1.在模版中使用变量,需要将变量放到‘{{}}’中.'{{ 变量 }}'2.如果想访问对象的属性,可以通过'对象.属性名'的方式访问3.如果想要访问一个字典的key对应的value, ...

  3. springboot devtool热部署的一个大坑

    spring.devtools.restart.poll-interval=3000ms spring.devtools.restart.quiet-period=2999ms 别问我为什么,问就是一 ...

  4. PTA的Python练习题(六)

    从 第3章-8 字符串逆序 开始 1. n = str(input()) n1=n[::-1] print(n1) 2. 不是很好做这道题,自己还是C语言的思维,网上几乎也找不到什么答案 s = in ...

  5. idea设置自带的maven为国内镜像

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/panchang199266/articl ...

  6. Pytorch本人疑问(1) torch.nn和torch.nn.functional之间的区别

    在写代码时发现我们在定义Model时,有两种定义方法: torch.nn.Conv2d()和torch.nn.functional.conv2d() 那么这两种方法到底有什么区别呢,我们通过下述代码看 ...

  7. [USACO 08MAR]土地购买

    Description 题库链接 给你 \(n\) 块不同大小的土地.你可分批购买这些土地,每一批价格为这一批中最大的长乘最大的宽.问你买下所有土地的花费最小为多少. \(1\leq n\leq 50 ...

  8. Markdown 语法使用

    Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,被广泛的应用在博客写 ...

  9. Day11 - N - Game HDU - 3389

    题目链接 题意是说有1到n个标号的盒子,选择一个非空的盒子A,B是否空无所谓,满足(A+B)%2=1,(A+B)%3=0,A>B 解上面的同余方程组,最小解为3,循环为2*3=6,那我们可以把前 ...

  10. Centos7 nginx 反向代理的配置

    一.正向代理与反向代理 1.正向代理 正向代理往VPN理解 正向代理,也就是传说中的代理,他的工作原理就像一个跳板(VPN),简单的说: 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这 ...