`
stephen830
  • 浏览: 3029823 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ssh sftp配置及权限设置

    博客分类:
  • sftp
 
阅读更多

 

 

从技术角度来分析,几个要求:
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的配置以及权限设置

    ### CentOS 下 SSH 及 SFTP 的配置与权限设置详解 #### 一、引言 SSH (Secure Shell) 是一种网络协议,用于计算机之间的加密登录。SFTP (SSH File Transfer Protocol) 则是一种基于 SSH 协议的安全文件传输协议。...

    vb.net SSH SFTP客户端源代码

    【VB.NET SSH SFTP 客户端源代码详解】 在IT行业中,SSH(Secure Shell)是一种网络协议,用于安全地远程登录服务器并执行命令。SFTP(Secure File Transfer Protocol)是SSH的一部分,提供了安全的文件传输功能。...

    QT实现SSH,sftp

    QT实现SSH和SFTP是基于Qt框架的网络通信技术,主要应用于远程服务器的访问和文件传输。在本文中,我们将深入探讨如何使用QT库来实现SSH(Secure Shell)和SFTP(Secure File Transfer Protocol)功能,以及如何在...

    Centos7.x部署SFTP服务+和ssh不同端口访问

    以下是如何在CentOS 7.x上部署SFTP服务并配置SSH在不同端口访问的详细步骤。 1. **安装OpenSSH服务器** 首先,确保你的系统已经安装了OpenSSH服务器,它是提供SFTP服务的基础。通过运行以下命令来安装: ``` ...

    linux系统创建SFTP用户及权限限制实战步骤

    ### Linux系统创建SFTP用户及权限限制实战步骤详解 #### 一、说明 本文将详细介绍如何在Linux系统中创建SFTP用户并实现权限限制。通过使用系统自带的internal-sftp功能,可以有效地限制用户只能在其home目录下进行...

    一个用于Node.js的SSH2SFTP客户端

    除了基本的文件操作,SSH2SFTP客户端还可以进行更复杂的操作,例如断点续传、文件权限设置、符号链接处理等。对于大型项目或自动化任务,这些高级功能是非常实用的。 在编写代码时,错误处理和资源管理是不可忽视的...

    详解Linux系统中设置SFTP服务用户目录权限的方法

    这些可以通过配置sftp服务实现。 方法如下 提供sftp服务的有vsftpd和internal-sftp,这里用的是系统自带的internal-sftp,操作步骤如下: 1.创建新用户ui,禁止ssh登录,不创建家目录 useradd -s /sbin/nologin -M ...

    Linux下SFTP用户权限设置条件及实现命令

    众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置。必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置...

    linux操作系统下配置ssh/sftp和权限设置方法

    本篇文章将详细介绍如何在Linux环境下配置SSH/SFTP服务以及进行权限设置。 首先,确保你的系统中SSH的版本在4.8p1以上,因为一些关键的安全特性是在这个版本之后引入的。你可以通过运行`ssh -V`来检查版本。如果...

    ssh sftp sshd 安卓版

    本文将详细讨论SSH、SFTP以及sshd在安卓环境中的应用。 首先,SSH(Secure SHell)是一种加密网络协议,主要用于在不安全的网络上安全地执行命令和传输数据。它提供了身份验证和加密功能,确保了在网络上传输的数据...

    Centos配置SFTP用户

    - 所有用户的根目录必须由root用户设置权限,保证了安全性。 - 用户只能访问和管理其被赋予权限的目录。 5. 测试步骤: - 使用sftp命令测试SFTP用户的连通性。 - 测试用户的SSH连通性,确认是否只有SFTP权限,没有...

    Linux下如何进行SFTP用户权限设置.docx

    本文将详细介绍 Linux 下如何进行 SFTP 用户权限设置,包括创建用户组、创建用户、修改 ssh 配置文件、设置用户权限等步骤。 必要条件 在进行 SFTP 用户权限设置之前,需要确保 openssh-server 的版本至少是 4.8p1...

    基于SSH协议的sftp协议

    该问题是由于SFTP协议的编码问题所致,可以通过设置编码方式来解决该问题。例如,可以使用UTF-8编码来解决乱码问题。 SFTP协议是一种安全的文件传输协议,提供了可靠的文件传输机制。通过JSch库,可以在Java应用...

    Go-sftp-这个Go包实现了SSH文件传输协议

    4. **文件属性**:获取和设置文件的权限、修改时间等元数据。 5. **流式传输**:支持大文件的高效上传和下载,可以通过流式接口实现断点续传。 6. **并发操作**:由于Go语言的并发特性,Go-sftp可以在多个goroutine...

    WINSCP-SFTP SSH免密码登录

    在服务器端,确保`~/.ssh`目录和`authorized_keys`文件的权限设置正确,以防止未经授权的访问。 7. **使用说明**:安装winscp575setup.exe文件来安装WINSCP,然后参考`使用说明.txt`了解如何配置站点、生成密钥对、...

    SSH Secure Shell Client(sftp)

    这个软件集成了SSH(Secure Shell)协议和SFTP(Secure File Transfer Protocol),使得用户可以方便地进行SSH远程主机操作以及通过SFTP安全地传输文件。 SSH,全称Secure Shell,是一种网络协议,用于在不安全的...

    SSH工具SFTP 客户端 WinSCP 5.13.4

    9. **文件权限管理**:可以查看和修改远程文件的权限,适应不同系统的文件权限设置。 10. **多种语言**:WinSCP支持多种语言,满足全球用户的使用需求。 **WinSCP与其他FTP工具的区别** 与传统的FTP工具相比,...

    详解Java使用Jsch与sftp服务器实现ssh免密登录

    3. 配置文件权限,一般设置为600,确保安全。 4. 在Java中,通过JSch库连接到SFTP服务器时,需要先建立一个JSch对象,然后创建一个Session(会话),并设置Session的配置属性。 5. 接着通过Session对象获取一个...

    Windows环境下使用SSH的开源图形化SFTP客户端WinSCP4.18

    7. **文件权限管理**:用户可以查看和修改远程文件的权限,包括读、写、执行等权限设置。 ### 安装与使用 安装WinSCP4.18时,只需运行winscp418setup文件,按照向导提示进行操作即可。安装完成后,启动WinSCP,...

Global site tag (gtag.js) - Google Analytics