0、查看openssh的版本

ssh -V
#使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。
 

1、创建sftp组

groupadd sftp   
 

2、创建一个sftp用户,用户名为mysftp,密码为mysftp

#修改用户密码和修改Linux用户密码是一样的。
useradd -g sftp -s /bin/false mysftp //用户名
passwd mysftp 密码
 

3、sftp组的用户的home目录统一指定到/var/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/var/sftp/mysftp

mkdir -p /var/sftp/mysftp
usermod -d /var/sftp/mysftp mysftp
 

4、配置sshd_config

#文本编辑器打开 /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
#找到如下这行,用#符号注释掉,大致在文件末尾处。
# Subsystem sftp /usr/libexec/openssh/sftp-server #在文件最后面添加如下几行内容,然后保存。 Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /var/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
 

5、设定Chroot目录权限

chown root:sftp /data/sftp/mysftp
chmod 755 /data/sftp/mysftp
 

6、建立SFTP用户登入后可写入的目录

#照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是#无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有#者有写入权限,而所有组无写入权限。命令如下:

mkdir /var/sftp/mysftp/upload
chown mysftp:sftp /var/sftp/mysftp/upload
chmod 755 /var/sftp/mysftp/upload
 

7、修改/etc/selinux/config

#文本编辑器打开/etc/selinux/config
vim /etc/selinux/config
#将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。 #在输入命令
setenforce 0
 

8、重启sshd服务

#输入命令重启服务。
service sshd restart
 

9、验证sftp环境

#用mysftp用户名登录,yes确定,回车输入密码。
sftp sftpuser@127.0.0.1
#显示 sftp> 则sftp搭建成功。
<sftp -oPort=22 sftpuser@127.0.0.1>
 

10、使用FileZilla FTP Client连接SFTP服务器

  输入主机IP地址、用户名、密码、端口连接SFTP服务器,端口默认为22。

相关知识点:

  

  /bin/false是最严格的禁止login选项,一切服务都不能用,
  /sbin/nologin只是不允许系统login,可以使用其他ftp等服务

如果想要用false在禁止login的同时允许ftp,则必须在/etc/shells里增加一行/bin/false。

知道了Linux用户管理最重要的两个文件就是/etc/passwd和/etc/shadow这两个文件。其中/etc/passwd是用来存储登陆用户信息的,它的基本格式如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

由上面的格式可以看出,每一行代表一个用户的信息,一共包括7个字段的信息,每个字段的信息用冒号隔开。这7个字段分别代表:

1. 账号名称:即登陆时的用户名
2. 密码:早期UNIX系统的密码是放在这个文件中的,但因为这个文件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了
3. UID:用户ID,每个账号名称对应一个UID,通常UID=0表示root管理员
4. GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是用来规范用户组信息的
5. 用户信息说明栏: 用来解释这个账号是干什么的
6. 家目录:home目录,即用户登陆以后跳转到的目录,以root用户为例,/root是它的家目录,所以root用户登陆以后就跳转到/root目录这里
7. Shell:用户使用的shell,通常使用/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是在这里设置的,如果要想更改登陆后使用的shell,可以在这里修改。另外一个很重要的东西是有一个shell可以用来替代让账号无法登陆的命令,那就是/sbin/nologin。

Linux之搭建sftp的更多相关文章

  1. linux 上搭建sftp服务

    原文链接:https://www.cnblogs.com/yanduanduan/p/9046723.html sftp和ftp的区别 FTP是一种文件传输协议,一般是为了方便数据共享的.包括一个FT ...

  2. linux如何搭建sftp服务器

    工具/原料   centos7.2_x64 方法/步骤   创建sftp组 groupadd sftp 创建完成之后使用cat /etc/group命令组的信息   2 创建一个sftp用户mysft ...

  3. Linux Centos 6.6搭建SFTP服务器

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

  4. Linux ---搭建SFTP服务器

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

  5. windows 上搭建 sftp 服务器 -freesshd全过程( 在linux上部署逐浪CMS的必读教程)

    文章标题: windows 上搭建 sftp 服务器 - freesshd全过程 关键字 : freesshd 文章分类: 教程 创建时间: 2020年3月23日 缘由 动手 第一步:添加用户 第二步 ...

  6. CentOS7.5 下搭建SFTP

    CentOS7.5 下搭建SFTP Linux 创建用户组 groupadd sftp 创建用户test useradd -G sftp -s /sbin/nologin test -s 禁止用户ss ...

  7. centos6和ubuntu14搭建sftp

    参考 http://blog.csdn.net/xinxin19881112/article/details/46831311 一. 在Centos 6.6环境使用系统自带的internal-sftp ...

  8. .Net Core实战教程(一):Linux下搭建项目

    .Net Core实战教程(一):Linux下搭建项目 附言 .net core 1.0的时候就开始关注了,一直没有用于项目.真正用于项目我是2.0开始使用的.这几年也总结出一些经验.最近有空就写出来 ...

  9. 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍

    Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...

  10. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

随机推荐

  1. Round #2022/11/26

    问题 B:染色 题目描述 有长度为 \(n\) 的一个序列,编号为 \(1\) 到 \(n\) ,现要对这些元素进行染色标记,若编号 \(i-j\) 为素数,且 \(1\le i < j \le ...

  2. SQL Management studio copy paste result out (string_agg line break)

    refer : https://stackoverflow.com/questions/59283754/string-agg-with-line-break string agg char(10) ...

  3. vue2 + webpack 分析报告 report == webpack-bundle-analyzer

    packjson.js 配置 "build-report":"vue-cli-service build --report", 执行 : npm run bui ...

  4. 云原生周刊:Istio 1.20.0 发布 | 2023.11.20

    开源项目推荐 DevPod DevPod 是一款纯客户端工具,可在任何后端基于 devcontainer.json 创建可重现的开发人员环境.每个开发者环境都在一个容器中运行,并通过 devconta ...

  5. 再见 Dockerfile,拥抱新型镜像构建技术 Buildpacks

    作者:米开朗基杨,方阗 云原生正在吞并软件世界,容器改变了传统的应用开发模式,如今研发人员不仅要构建应用,还要使用 Dockerfile 来完成应用的容器化,将应用及其依赖关系打包,从而获得更可靠的产 ...

  6. RocketMQ Streams拓扑构建与数据处理过程

    本文作者:倪泽,Apache RocketMQ committer.RSQLDB/RocketMQ Streams Maintainer 01 背景 RocketMQ Streams 1.1.0版本已 ...

  7. 抽象队列同步器AQS

    AQS是AbstractQueuedSynchronizer的简称,即抽象队列同步器,从字面上可以这样理解: 抽象:抽象类,只实现一些主要逻辑,有些方法由子类实现: 队列:使用先进先出(FIFO)的队 ...

  8. 什么是SCI, SCIE, JCR和影响因子(IF)?

    SCI(Scientific Citation Index):是美国科学信息研究所(ISI)编辑出版的引文索引类刊物,创刊于1964年.分印刷版.光盘版和联机板等载体.印刷版.光盘版从全球数万种期刊中 ...

  9. CSS动画(波光粼粼登录页面)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa4AbemkU3vLRIDzTIgPHSjicia97wfvMVAhqZL4lsGbQQCbsV ...

  10. 如何使用git上传代码github仓库

    本文对于Windows系统上git的安装及基本使用方法进行简单介绍,并介绍如何使用git将仓库中的项目上传至个人的Github中去. 1.打开git 打开你想上传文件的位置,然后选择git bash ...