SFTP搭建

SFTP搭建

【前言】

前段时间被告知需要搭建一个sftp,用来和tob客户进行文件传递,虽然不是很紧急,但是最终还是得弄出来,由于最近一直在忙另外两个项目,一直没时间搞,直到这两天稍微有点时间,之前确实仅仅局限于了解,并没有动手搭建,估记录一下。

【SFTP简介】

各位看官老爷对FTP应该不陌生吧,文件传输协议,TCP/IP协议簇之一,用来进行双向传输文件,前端时间刚刚写过HTTP和HTTPS,那么FTP和SFTP是不是也是一样呢,多了个安全相关的东西。没错,你猜对了,百度曰:SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一数据流连接,提供文件访问、传输和管理功能的网络传输协议跟HTTPS类似,SFTP它也是通过加密和解密来保证传输文件的安全的。

SFTP和FTP的功能和使用的参数几乎一毛一样,你说它属于SSH软件也是合理的,它并没有属于自己的守护进程,它使用的守护进程当然是SSH的,通过SSH的端口(默认22,建议修改为其他端口)来进行连接和文件传输的。当然,你得知道一点,因为在传输过程中需要进行加密解密,自然传输效率是不如FTP的,所以使用哪个传输方式需要依据实际情况斟酌斟酌。

【SFTP搭建】

本文配置环境

CentOS Linux release 7.6.1810 (Core)

Linux VM171-test-ng_proxy 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

1、关闭防火墙等限制,如果你在公司内部,需要给外部开放的话,配置对应公司内的防火墙即可,服务器防火墙等还是需要清除的

扫描二维码关注公众号,回复: 10846281 查看本文章
# 关闭firewalld
systemctl stop firewalld && systemctl disable firewalld

# 临时关闭selinux
setenforce 0

# 配置永久关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 清除iptables规则
iptables -t -nat -F
iptables -F

2、确定openssh版本,需要大于4.8pl

[root@VM171-test-ng_proxy ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

3、创建组

sudo groupadd hobby

4、创建用户这里我创建的用户和组都为hobby,如果说这个用户仅仅是为了文件传输,这里是不建议给登陆权限的,加入-s /sbin/nologin参数即可

sudo useradd -g hobby -s /sbin/nologin hobby

5、配置密码

passwd hobby

6、创建用户进行传输的目录并设置权限

mkdir -p /chroot/hobby
chmod -R 755 /chroot/hobby

# 如果不允许hobby用户上传,就将/chroot/hobby用户为root
chogrp -R hobby /chroot/hobby

# 如果允许此上传文件,就将此目录用户和组都设置为hobby
chown -R hobby. /chroot/hobby

 

7、修改配置文件sshd_config

sudo vim /etc/ssh/sshd_config

找到下面这一行,将其注释掉,即在行首添加#

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

然后添加下面这几行

Subsystem       sftp    internal-sftp

Match user hobby    
      ChrootDirectory /chroot/hobby
      ForceCommand    internal-sftp

# Match此处填写需要使用sftp的用户组,指定以下行仅仅匹配hobby组中的用户

# ChrootDirectory填写进行文件传输的目录的绝对路径

# ForceCommand表示强制执行内部的sftp,并忽略~/.ssh/rc中的命令

7、重启ssh服务

systemctl restart sshd

至此配置就完成了,接下来进行测试

sftp [email protected]

拉取sftp服务器端文件

【SFTP常用命令】

我这里就只讲几个常用的命令

help      顾名思义,用来查看sftp支持哪些命令

pwd      查看SFTP服务器目录

lpwd      查看本地当前目录

ls         查看SFTP服务器当前目录下的文件

lls        查看本地当前目录下的文件

put file   将本地当前目录下的file文件上传至SFTP服务器当前目录下

get file    将SFTP服务器当前目录下的file文件下载到本地当前目录

!command  在本地linux指向command命令,比如!rm file是删除本地linux当前目录下的file文件,因为在sftp>后输入的命令,默认是对SFTP服务器进行操作,所以sftp> rm file是删除SFTP服务器当前目录的file文件

exit    退出

总而言之呢,如果你不记得有什么命令了,那就用help查看吧

发布了113 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_24601199/article/details/105478708