从技术角度来分析,几个要求:
1、从安全方面看,sftp会更安全一点
2、线上服务器提供在线服务,对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
提供sftp服务,可以用系统自带的internal-sftp,也可以使用vsftpd,这里需求不多,直接选用internal-sftp。
限制用户只能在自己的home目录下活动,这里需要使用到chroot,openssh 4.8p1以后都支持chroot,我现在用的是CentOS 6.3,自带的openssh已经是5.3p1,足够了。
可以输入:
# ssh -V
来查看openssh的版本,如果低于4.8p1,需要自行升级安装,不在这里具体介绍了。
假设,有一个名为sftp的组,这个组中的用户只能使用sftp,不能使用ssh,且sftp登录后只能在自己的home目录下活动
1、创建sftp组
# groupadd sftp
2、创建一个sftp用户,名为mysftp
# useradd -g sftp -s /bin/false mysftp
# passwd mysftp
3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp
# mkdir -p /data/sftp/mysftp
# usermod -d /data/sftp/mysftp mysftp
4、配置sshd_config
编辑 /etc/ssh/sshd_config
# vim +132 /etc/ssh/sshd_config
找到如下这行,并注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下几行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
解释一下添加的几行的意思
Subsystem sftp internal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
当然,也可以匹配用户
Match User mysftp
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
ChrootDirectory /data/sftp/%u
用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动,chroot的含义,可以参考这里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
5、设定Chroot目录权限
# chown root:sftp /data/sftp/mysftp
# chmod 755 /data/sftp/mysftp
错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX”的内容
目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1)我们将/data/sftp/mysftp的所有者设置为了root,所有组设置为sftp
2)我们将/data/sftp/mysftp的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
6、建立SFTP用户登入后可写入的目录
照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
# mkdir /data/sftp/mysftp/upload
# chown mysftp:sftp /data/sftp/mysftp/upload
# chmod 755 /data/sftp/mysftp/upload
7、重启sshd服务
# service sshd restart
到这里,mysftp已经可以通过sftp客户端登录并可以上传文件到upload目录。
如果还是不能在此目录下上传文件,提示没有权限,检查SElinux是否关闭,可以使用如下指令关闭SElinux
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。或者
# setenforce 0
一开始,我以为是权限问题导致的无法上传文件,即使给777权限给文件夹也无法上传文件,关闭SElinux才可以正常上传。
相关推荐
### CentOS 下 SSH 及 SFTP 的配置与权限设置详解 #### 一、引言 SSH (Secure Shell) 是一种网络协议,用于计算机之间的加密登录。SFTP (SSH File Transfer Protocol) 则是一种基于 SSH 协议的安全文件传输协议。...
以下是如何在CentOS 7.x上部署SFTP服务并配置SSH在不同端口访问的详细步骤。 1. **安装OpenSSH服务器** 首先,确保你的系统已经安装了OpenSSH服务器,它是提供SFTP服务的基础。通过运行以下命令来安装: ``` ...
在CentOS 6及以上版本中配置SFTP用户,涉及到以下步骤: - 创建用户组和用户:使用`groupadd`命令创建一个名为sftpuser的用户组,随后使用`useradd`命令创建一个SFTP用户,比如sftpuser01。 - 设置SFTP根目录:使用...
相比传统的 ftp 服务,SFTP 显得更加方便、安全,一般系统安装了 ssh 后,默认就安装了这个服务,我们只要简单的配置一下就可以了。 但是 SFTP 账号是基于 SSH 账号的(也就是系统账户),默认情况下访问服务器的...
3. **重启 SSH 服务**:最后,重启 SSH 服务使所有配置生效: ```bash service sshd restart ``` #### 五、测试 SFTP 连接 1. **本地测试**:使用 `mysftp` 用户名尝试连接到本地 SFTP 服务器,以验证配置是否...
### CentOS 7 搭建 SFTP 服务器及开启日志详细步骤 #### 一、基础知识简介 在深入了解搭建过程之前,我们先简单了解一下几个关键概念: - **SFTP(Secure File Transfer Protocol)**:安全文件传输协议,是 SSH ...
为了确保SFTP服务能够正常运行,我们需要正确设置文件夹权限。 ```bash # 将主目录的拥有者设为root,所属组为sftp chown root:sftp /var/www/html/uploads/ # 设置主目录权限 chmod 755 /var/www/html/uploads/ #...
标题“centos7-ssh8.3.rar”指的是一个针对CentOS 7操作系统的SSH(Secure Shell)软件包,版本为8.3p1。SSH是网络服务中的一个关键组件,它提供了在不安全的网络环境中安全地进行远程登录和其他服务的能力。这个RAR...
2. 使用`sudo`或以root权限运行RPM安装命令,例如`sudo rpm -Uvh centos94_centos6.rpm`,其中`centos94_centos6.rpm`是实际的RPM文件名。 3. 安装后,启动或重启sshd服务以应用更改,命令可能是`sudo systemctl ...
脚本可能包含了所有必要的步骤,如安装OpenSSH服务器(SFTP通常与SSH一起运行),配置防火墙规则,创建用户账户,以及设置权限和访问控制。 标签 "sftp安装 基于centos" 明确指出这个安装脚本是针对CentOS操作系统...
3. **配置SSH服务**:安装完成后,需要编辑`/etc/ssh/sshd_config`配置文件,确保SFTP功能开启。找到`Subsystem`配置项,确认SFTP子系统已启用: ``` Subsystem sftp internal-sftp ``` 4. **创建用户账户**:...
标题 "centos7-ssh8.4p1 rpm包" 提供了我们即将讨论的核心信息:这是用于CentOS 7操作系统的OpenSSH 8.4p1版本的RPM(Red Hat Package Manager)包。RPM是Linux发行版中广泛使用的软件包管理器,它允许用户方便地...
7. **配置调整**:`OpenSSH 8.9P1`可能引入了新的配置选项或改变了某些默认设置。检查`/etc/ssh/sshd_config`并根据需要进行调整,以保持与现有策略的一致性。 8. **重启服务**:完成配置后,务必重启`sshd`服务以...
### Centos 6.5 SSH配置与使用教程 #### 一、引言 在现代的服务器管理和运维工作中,SSH(Secure Shell)作为一种重要的远程管理工具,被广泛应用于Linux系统的远程登录、文件传输等操作中。本文将详细介绍如何在...
6. 启动和启用服务:启动`sshd`服务,并设置为开机启动,确保系统重启后SFTP服务依然可用。 7. 验证安装:最后,脚本可能会进行一些基本的验证,比如检查SFTP服务是否运行,用户能否成功连接。 `add_sftp_user.sh` ...
### SSH服务的基础概念与配置详解 #### 一、SSH服务简介 SSH(Secure Shell)是一种网络协议,用于计算机之间的安全登录。它通过提供安全的数据加密通道来保护远程登录过程中的数据安全,防止密码和其他敏感信息被...
《CentOS 6.x系统OpenSSH 8.1p1的安装与配置详解》 在IT行业中,安全的远程访问是运维工作中的重要一环,OpenSSH作为一款强大的开源安全套接字层(SSL)协议工具,被广泛应用于Linux系统中,提供安全的远程登录和...
本手册将详细讲解如何在Linux系统上搭建一个SFTP服务器,以 CentOS 7.5 为例,主要涵盖三个部分:准备环境、配置服务以及用户管理。 ## 第 1 章 准备环境 在开始安装前,我们需要确保系统环境满足SFTP服务器的运行...
配置文件通常位于/etc/ssh/sshd_config,其中可以设置端口号、认证方式、权限等。SSH登录服务器可以通过`ssh 用户名@主机地址`命令实现,文件传输可以使用`scp`或`sftp`命令。SSH免密登录则需要在客户端和服务器间...