Sftp服务器搭建和限制用户目录

Sftp服务器搭建和限制用户目录

概述:公司对外客户上传账户清单,以前每个月都是用FTP上传,出于安全考虑改用sftp上传但又要限制用户根目录,为此在网上查了很多资料,在此记录下自己心得。

目录:

  • 什么sftp服务器
  • 怎么搭建sftp服务器
  • 怎么限制用户目录
  • 常见错误

什么sftp服务器

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。本身没有守护进程,是包含在ssh中,端口也是22.

怎么搭建sftp服务器

在主流linux系统版本当中,默认都有安装openssl和openssh包,都有ssh命令,也就是说默认安装好了SFTP服务器和sftp命令。

没有的安装,安装方法很简单,在centos/redhat等,直接安装:

[[email protected] ~]# yum -y install openssl

[[email protected] ~]# yum -y install openssh-server

[[email protected] ~]# yum -y install openssh-clients

有安装但版本太低, 想sftp服务用户只能访问特定的文件目录,版本需要4.8以上:

以下源为码升级方法,是以centos5.11为例。

0. 先查看当前安装的版本

用 ssh -V 命令查看ssh版本 和 用openssl version 命令查看openssl版本

[[email protected] ~]# ssh  -V

OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

[[email protected] ~]# openssl version

OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

1.官网下载新版的源码包

openssh: http://www.openssh.com/portable.html 这里, 官网上找到的下载有两种, 一种是直接下载OpenBSD的(附带openssh, 显然不是我等需要的), 另外一种就是这种portable版的

openssl:  http://www.openssl.org/source/

2. 安装openssl

一定要先安装openssl, 一定记得加上--shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配

[[email protected] ~]#tar -zxvf openssl-1.0.1j.tar.gz

[[email protected] ~]# cd  cd openssl-1.0.1j

[[email protected] openssl-1.0.1j]#  ./config --prefix=/usr –shared

[[email protected] openssl-1.0.1j]#  make
[[email protected] openssl-1.0.1j]#  make test(这一步很重要哦!是进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用,后果很严重哦!)
[[email protected] openssl-1.0.1j]#  make install

完毕后查看openssl版本安装是否正确

[[email protected] openssl-1.0.1j]#  openssl version

OpenSSL 1.0.1j 15 Oct 2014

3. 安装openssh

[[email protected] ]# cd ../openssh-5.3p1

[[email protected] ]# tar zxvf openssh-5.3p1.tar.gz

[[email protected] ]# cd ../openssh-5.3p1

[[email protected] openssh-5.3p1]# ./configure --prefix=/usr --with-pam --with-zlib --with-md5-passwords
 [[email protected] openssh-5.3p1]#     make
 [[email protected] openssh-5.3p1]#    make install

完毕后查看openssh版本安装是否正确

[[email protected] openssl-1.0.1j]#  ssh  -V

OpenSSH_5.3p1, OpenSSL 1.0.1j 15 Oct 2014

这种安装会把sshd的配置文件放在/usr/etc/sshd_config

4.生成/etc/init.d/sshd服务管理脚本

进入ssh解压目录

[[email protected] openssh-5.3p1]#  #cd /contrib/redhat

[[email protected] redhat]#  cp sshd.init /etc/init.d/sshd

[[email protected] redhat]#  chmod +x /etc/init.d/sshd

[[email protected] redhat] #  chkconfig –add sshd

最后,启动 SSH 服务使修改生效:
 [[email protected] redhat] # /etc/init.d/sshd restart

怎么限制用户目录

1.新增用户,限制用户只能通过sftp访问


[[email protected] home]# useradd -m  -s /sbin/nologin delcom03

2.限制用户通过sftp登录进来时只能进入主目录或某一个目录

如果是用yum和rpm包安装的修改/etc/ssh/sshd_config文件,我这是个源码安装的且为—perfix=/usr,所以要修改/usr/etc/ssh/sshd_config.

[[email protected] home]# vim /usr/etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/sftp-server

Subsystem       sftp    internal-sftp

# Example of overriding settings on a per-user basis

#Match User anoncvs

#       X11Forwarding no

#       AllowTcpForwarding no

#       ForceCommand cvs server

Match User delcom03

X11Forwarding no

ChrootDirectory /home/delcom03

#       AllowTcpForwarding no

ForceCommand  internal-sftp

3.测试访问


[[email protected]  home]# sftp -oport=22 [email protected]

Connecting to 192.168.1.67

The authenticity of host ‘192.168.1.67 (192.168.1.67)‘ can‘t be established.

RSA key fingerprint is 97:e1:59:e6:89:4f:a0:72:dd:5d:ba:0b:15:75:b6:a8.

Are you sure you want to continue connecting (yes/no)?

Warning: Permanently added ‘192.168.1.67‘ (RSA) to the list of known hosts.

[email protected]‘s password:

Read from remote host 192.168.1.67: Connection reset by peer

Couldn‘t read packet: Connection reset by peer

4.发现连接不上,查看日志


[[email protected]  home]# tail /var/log/messages

Dec 11 08:58:41 localhost sshd[4907]: fatal: bad ownership or modes for chroot directory "/home/delcom03"

Dec 11 08:58:41 localhost sshd[4905]: pam_unix(sshd:session): session closed for user delcom03

解决方法:

目录权限设置要遵循2点:

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。

如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。

[[email protected]  home]# ll

drwxr--- --- 3  delcom03  delcom03 4096 Dec 10 16:42 delcom03

[[email protected]  home]# chown root root

[[email protected]  home]# chmod 755 delcom

[[email protected]  home]# ll

drwxr-xr-x 3  root   delcom03 4096 Dec 10 16:42 delcom03

这里可以看出delcom03账户sftp登录后没有删除和写权限,下面就来解决。

[[email protected]  home]# mkdir sftp &&chown delcom03 sftp

[[email protected]  home]# ll delcom03/

drwxr-xr-x 3  delcom03  root  4096 Dec 10 18:58 sftp  上传文件到sftp目录,就有写权限了

然后在测试通过

[[email protected]  home]# sftp -oport=22 [email protected]

Connecting to 192.168.1.67

[email protected]‘s password:

sftp>

sftp> cd  /

sftp> pwd

Remote working directory: /

sftp> ls

sftp

sftp> ls /

/sftp

sftp> cd sftp

sftp> pwd

Remote working directory: /sftp

sftp> lls

test.txt

sftp> put  test.txt

Uploading  test.txt  to /sftp/test.txt

Test.txt                       100%  31KB  31.4KB/s   00:00

可以看到用户delcom03可以上传文件到根/sftp目录,且已经限制用户在家目录,同时该用户也不能登录该机器。

常见错误

Couldn‘t read packet: Connection reset by peer

主要是权限问题,上面连接测试时有提到。

时间: 2024-07-30 18:55:43

Sftp服务器搭建和限制用户目录的相关文章

SFTP服务器搭建

今天公司业务部门说要测试一款产品,需要FTP服务器,本来想给他们使用pure-ftp,但是他们指定要SFTP服务器. 我从来都没搭建过,正好借此机会部署测试一下 SFTP访问会使用本地系统账号,而非其他ftp服务器那样可以使用虚拟账号 1 软件包(大多数系统已默认安装) openssh openssh-clients openssh-server 2 创建ftp组与ftp账号 在创建账号时,禁止ssh登录,并将账号加入ftpgroup,账号密码为123456 # groupadd ftpgrou

烂泥:Postfix邮件服务器搭建之虚拟用户配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 在前一篇文章<烂泥:Postfix邮件服务器搭建之软件安装与配置>中,我们介绍了psotfix邮件服务器搭建所需要的软件,以及各个软件的基本配置. 目前已经达到了通过系统用户可以登录到postfix邮件服务器,但是为了管理的方便和系统安全,我们一般是通过postfix的虚拟用户来管理邮件用户的. Postfix虚拟用户的原理是,先在系统中创建一个用户,该用户不能登录到系统,然后把邮件

ftp 服务器搭建和添加用户和目录

安装: yum install  -y vsftpd 修改配置: vsftpd.conf 修改:anonymous_enable=YES 改为:anonymous_enable=NO 启动/停止/重启: service vsftpd start/stop/restart 添加用户: useradd ftpuser -s /sbin/nologin passwd ftpuser 输入密码:ftpuser 然后: linux关闭防火墙. linux关闭selinux: 最后: 通过浏览器或客户端连接

Vsftpd3.0--FTP服务器搭建之本地用户篇

2017年4月10日 19:23 FTP服务在工作中是经用到的一种工具,可以实现上传下载等功能.那么今天我们来聊一聊FTP服务器使用本地用户登录的实现模式. 既然是本地用户,就少不了要创建本地用户,下面我们创建2个用户: 第一步:创建用户 第一次创建一个本地可登录的用户 第二次创建一个nologin用户,即此用户不可登录系统,但仍可以登录FTP 注意:加完用户后要为用户设置密码否则无法登录FTP 看一下2个用户的家目录 这里2个用户的家目录的所有者都是有写权限的. 第二步:编辑vsftpd.co

Linux Centos 6.6搭建SFTP服务器

在Centos 6.6环境使用系统自带的internal-sftp搭建SFTP服务器. 打开命令终端窗口,按以下步骤操作. 0.查看openssh的版本 1 ssh -V 使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级. 1.创建sftp组 1 groupadd sftp 2.创建一个sftp用户,用户名为mysftp,密码为mysftp 修改用户密码和修改Linux用户密码是一样的. useradd -g sftp -s /bin/false

Windows 7下 搭建 基于 ssh 的sftp 服务器

Windows  xp 下 搭建 基于  ssh 的sftp 服务器,服务器端可以用 freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用filezilla 来做服务器,找不到任何有关sftp的配置选项,推荐用freesshd,免费.简单,直观,客户端可以用一般的支持sftp的都可以,filezilla,f-secure client 等,我用freesshd和filezillazilla 搭建sftp 服务,我在内网搭建的,如果在外网发布,

linux搭建sftp服务器

转自:http://blog.csdn.net/superswordsman/article/details/49331539 最近工作需要用到sftp服务器,被网上各种方法尤其是权限设置问题搞得晕头转向,现在将自己搭建过程总结了一下,整理出来一种最简单的方法可供大家参考. 第1歩,添加sftp用户并制定根目录:useradd -d  /home/sftp  -s /sbin/nologin sftpuser 第2歩,修改密码:执行passwd sftpuser,然后输入密码2次即可 第3歩,修

sftp限制用户目录

背景说明:业务部门需通过sftp(22端口)用堡垒机访问应用服务器,以替换欢迎语语音. ? 环境说明: 主机名 操作系统版本 ip 备注 redhat6.8 Red Hat Enterprise Linux Server release 6.8 (Santiago) 172.27.9.199 应用服务器,关闭selinux localhost Red Hat Enterprise Linux Server release 6.8 (Santiago) 172.27.9.189 sftp连接测试

2Ubuntu下nfs服务器搭建,Linux多台电脑共享目录

 1安装nfs(网络文件系统)服务器 共享的原理: 安装命令: sudo apt-get install nfs-kernel-server 2设置/etc/exports配置文件 添加以下这行配置 其中: *表示所有ip,如果想指定ip,可以把*换成你自己的ip地址. rw:表示只读权限,如果想变成只读的,修改配置为ro sync:表示同步的方式.任何人对这个目录的修改,其它人都可以看到. 3.在用户目录下创建nfs目录 4.重启服务器,发现有4个OK,这时候说明配置成功了. 5.磁盘挂载