sftp

一、首先查看系统自带openssh软件组的版本,版本过低则不支持此功能

1.  ssh -V 

#系统自带为4.3版本,版本过低,不支持此功能,升级openssh的版本

二、升级Openssh组件版本,在此将其升级为5.8版本:

1、下载所需要的软件:
libedit0-3.0-1.20090722cvs.el5.x86_64
wget http://dl.atrpms.net/el5-x86_64/atrpms/stable/libedit0-3.0-1.20090722cvs.el5.x86_64.rpm

openssh-5.8p2-16.el5.1.x86_64
wget http://centos.alt.ru/repository/centos/5/x86_64/openssh-5.8p2-16.el5.1.x86_64.rpm
openssh-askpass-5.8p2-16.el5.1.x86_64
wget http://centos.alt.ru/repository/centos/5/x86_64/openssh-askpass-5.8p2-16.el5.1.x86_64.rpm
openssh-clients-5.8p2-16.el5.1.x86_64
wget http://centos.alt.ru/repository/centos/5/x86_64/openssh-clients-5.8p2-16.el5.1.x86_64.rpm
openssh-server-5.8p2-16.el5.1.x86_64

wget http://centos.alt.ru/repository/centos/5/x86_64/openssh-askpass-5.8p2-16.el5.1.x86_64.rpm

2、安装新版本所需的库文件:

1.  rpm -ivhlibedit0-3.0-1.20090722cvs.el5.x86_64

3、升级sftp所需的软件组,将四个软件放到任何一个干净的目录下www.linuxidc.com:

1.  rpm -Uvh *

更新过程如果没有报错,查看版本是否已经更新为5.8

1.  ssh -V

  #已经升级为5.8版本

三、示例及配置

示例:

在此列举两个用户:uer1,user2分别属于group1,group2两个组,两个目录groupone,grouptwo在目录lg中目的:
1、user1(即属于group1的用户)只有在groupone这个目录中具有读写权限,在grouptwo目录中没有任何权限

2、user2(即属于group2的用户)只有在grouptwo这个目录中具有读写权限,在groupone目录中没有任何权限

3、user1和user2只能在自己的目录下活动

配置过程:

1、按照如下方法修改配置文件

1.  Match groupgroup1,group2   #定义属于这两个组的用户才能登录

2.        ChrootDirectory /lg  #定义这两个组的用户只能在lg这个目录下活动,要保证用户的家目录的父目录必须有XX5权限,且属主为root;

3.        X11Forwarding no

4.        AllowTcpForwarding no

5.        ForceCommand internal-sftp #保存退出

2、添加所需的目录(在目录不存在的情况下)

1.  mkdir -p /lg/groupone

2.  mkdir -p /lg/grouptwo

3、添加用户组

1.  groupadd group1

2.  groupadd group2

4、添加用户

1.  useradd -g group1 -d/lg/groupone  -s /bin/false  user1  #添加家目录为/lg/groupone属组为group1且不能登录系统的用户user1

2.  useradd -g group2 -d/lg/grouptwo  -s /bin/false  user2

5、给user1和user2设置密码

1.  passwd user1

2.  passwd user2

6、修改groupone的属组和权限

1.  chown root:group1/lg/groupone

2.  chmod 770 /lg/groupone

7、修改grouptwo的属组和权限

1.  chown root:group2/lg/grouptwo

2.  chmod 770 /lg/grouptwo

四、重新启动sshd服务

1.  service sshd restart

接下来就是使用user1和user2登录sftp服务器进行验证吧!

2、修改配置文件/etc/ssh/sshd_config

sshd通常是打开了sftp的,不过我们应该使用internal-sftp在sshd_conf中作如下配置:

1 # Subsystem sftp/usr/lib/openssh/sftp-server # 注释掉
2 Subsystem sftp internal-sftp
3
4 ##
5 Match group sftponly
6 ChrootDirectory /sftphome/%u
7 X11Forwarding no
8 AllowTcpForwarding no
9 ForceCommand internal-sftp
10

解释一下:当sshd匹配到sftponly组中的用户,就会强制使用sftp(ForceCommand的作用),并将用户限定在/sftphome/下相应用户的目录下(ChrootDirectory的作用)。

注释:

Match引入一个条件块。块的结尾标志是另一个Match指令或者文件结尾。如果Match行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。Match的值是一个或多个"条件-模式"对。可用的"条件"是:User, Group, Host, Address 。只有下列指令可以在Match块中使用:AllowTcpForwarding, Banner, ForceCommand, GatewayPorts, GSSApiAuthentication,KbdInteractiveAuthentication, KerberosAuthentication, PasswordAuthentication,PermitOpen, PermitRootLogin, RhostsRSAAuthentication, RSAAuthentication,X11DisplayOffset, X11Forwarding, X11UseLocalHost

创建用户

我们需要创建相应的用户了:

#groupadd sftponly
#useradd -G sftponly -d /sftphome/sftpuser -s /bin/false sftpuser
#tail /etc/password

sftpuser:x:1000:1000::/sftphome/sftpuser:/bin/false
#passwd sftpuser
#mkdir -p /sftphome/sftpuser

你可以在其他机器上用sftp登录试试了。你的连接将会被reset!去看看sshd的日志,你会发现pam.d的认证是通过了的,但是chroot失败了。按网络上的说法

#chownroot /sftphome/sftpuser
#chmod 755 /sftphome/sftpuser

再试,可以登录。新的问题是不能在此目录下写入。对的嘛,755对于组用户是不能写啊。再试试775,刚才的问题就来又了,chroot失败。

#mkdir /sftphome/sftpuser/space
#chown sftpuser.sftpuser /sftphome/sftpuser/space

由系统管理员为sftp用户提供一个目录,并设置其用户属性,用户在这个目录下用户是可写的。当然可以创建很多个。

重启ssh服务

#service sshd restart

机房

显示用户其他SFTP用户目录

示例:

在此列举一个用户:qq属于sftpuser组,目录/sftpuser/qq在目录home中目的:
1、qq(即属于sftpuser的用户)只有在/home/sftpuser/qq这个目录中具有读写权限,

2、qq只能在自己的目录下活动

配置过程:

1、按照如下方法修改配置文件

6.  Match group sftpuser   #定义属于这组的用户才能登录

7.        ChrootDirectory /home/sftpuser  #定义这组的用户只能在/home/sftpuser这个目录下活动,要保证用户的家目录的父目录必须有XX5权限,且属主为root;

8.        X11Forwarding no

9.        AllowTcpForwarding no

10.      ForceCommand internal-sftp #保存退出

2、添加所需的目录(在目录不存在的情况下)

3.  mkdir -p /home/sftpuser

3、添加用户组

3.  groupadd sftpuser

4、添加用户

3.  useradd -g sftpuser -d /home/sftpuser/qq  -s /bin/false qq  #添加家目录为/home/sftpuser/qq属组为sftpuser且不能登录系统的用户qq

5、给frank设置密码

3.  passwd qq

6、修改groupone的属组和权限

3.  chown root:sftpuser /home/sftpuser

4.  chmod 750 /home/sftpuser/qq

四、重新启动sshd服务

2.  service sshd restart

接下来就是使用frank登录sftp服务器进行验证吧!

五 另如果要添加另外的SFTP用户只需要运行4.1和6.2的命令即可,如添加用户jackpaue

1. useradd useradd -g sftpuser -d/home/sftpuser/cdq -s /bin/false cdq

#添加家目录为/home/sftpuser/cdq属组为sftpuser且不能登录系统的用户cdq

2. chmod 750 /home/sftpuser/cdq

不显示其他用户目录

示例:

在此列举一个用户:qq属于sftpuser组,目录/sftpuser/qq在目录home中目的:
1、qq(即属于sftpuser的用户)只有在/home/sftpuser/qq这个目录中具有读写权限,

2、qq只能在自己的目录下活动

配置过程:

1、按照如下方法修改配置文件

11.Match group sftpuser   #定义属于这组的用户才能登录

12.      ChrootDirectory /home/sftpuser/%u  #定义这组的用户只能在/home/sftpuser这个目录下活动,要保证用户的家目录的父目录必须有XX5权限,且属主为root,修改为/home/sftpuser/%u;

13.      X11Forwarding no

14.      AllowTcpForwarding no

15.      ForceCommand internal-sftp #保存退出

2、添加所需的目录(在目录不存在的情况下)

4.  mkdir -p /home/sftpuser

3、添加用户组

4.  groupadd sftpuser

4、添加用户

4.  useradd -g sftpuser -d /home/sftpuser/qq  -s /bin/false qq  #添加家目录为/home/sftpuser/frank属组为sftpuser且不能登录系统的用户frank

5、给frank设置密码

4.  passwd qq

6、修改sftpuser的属组和权限

5.  chown root:sftpuser /home/sftpuser

6.  chmod 750 /home/sftpuser/qq

#修改添加以下步骤

7.  chown root:sftpuser /home/sftpuser/qq

8.  mkdir/home/sftpuser/qq/qq

9.  chown qq.sftpuser /home/sftpuser/qq/qq

四、重新启动sshd服务

3.  service sshd reload

接下来就是使用frank登录sftp服务器进行验证吧!

五 另如果要添加另外的SFTP用户只需要运行4.1和6.2的命令即可,如添加用户cdq

1. useradd useradd -g sftpuser -d/home/sftpuser/cdq -s /bin/false cdq

2. chmod 750 /home/sftpuser/cdq

3.  passwd cdq

#添加以下步骤

4.  chown root/home/sftpuser/cdq

5.  mkdir/home/sftpuser/cdq/cdq

6.  chown cdq.sftpuser/home/sftpuser/cdq/cdq

sftp,布布扣,bubuko.com

时间: 2024-08-05 04:35:12

sftp的相关文章

搭建sftp服务+nginx代理

在公司,经常会用到sftp服务,比如两个公司对接生产项目,其中一方,要在sftp上上传pdf文件,另一方公司要在sftp服务器上用nginx代理直接下载pdf文件.下面就说说我在实际中应用到的sftp服务+nginx代理的配置方法: 一.环境: 192.168.16.12     centos6.5 在Centos 6.5环境使用系统自带的internal-sftp搭建SFTP服务器. 二.查看版本 查看openssh的版本,使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p

SFTP上传下载文件

secureCRT SFTP上传/下载文件 远程登陆IP secureCRT会话中点击SFTP 3.cd  /home/dowload       linux平台切换到/home/dowload目录 4.cd d:\   windows平台切换到d盘 5.put 文件名           上传 /home/dowload目录下 6.get 文件名   下载文件到windows平台 d盘

如何使用jcraft 模拟SFTP登陆

大家如果熟悉Linux系统话,对ssh,sftp,scp等命令非常熟悉.ssh是一个安全协议,用来在不同系统或者服务器之间进行安全连接.ssh 在连接和传送的过程中会加密所有的数据. 而今天我要介绍的一个jar包,是使用 JSCH.JSCH是一个纯粹的用Java实现SSH功能的java  library. 官方地址为:http://www.jcraft.com/jsch/GitHub 地址为:https://github.com/vngx/vngx-jsch maven配置如下: <!-- 加入

C#远程执行Linux系统中Shell命令和SFTP上传文件

一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = new Renci.SshNet.SshClient("192.168.1.104", "sindrol", "123456"); ssh.Connect(); while (true) { Console.WriteLine("please input com

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几个常见网络命令解析:ping, telnet, ssh, ftp/sftp, netstat, tracert, arp

1.ping 网络层协议,只能判断主机之间是否连接,不能判断端口是否开放. 2.telnet 应用层协议,是Intenet远程登录服务的标准协议和主要形式.登录的账号密码与数据明文传输,不加密. window为了安全考虑,一般禁用此命令,需要自己安装的(控制面板-程序-打开或关闭window功能,之后具体还要查怎么设)点击此查详细 如果安装了telnet,可用来测试端口是否开放:telnet IP:Port 3.ssh (Secure Shell) 建立在应用层和传输层基础上的安全协议,作用同上

FTP 与 SSH 的安全性对比, 以及FTP,SSH,SFTP,SCP 的关系简单解析!

FTP 与 SSH 的安全性对比? ftP: http://baike.baidu.com/subview/369/6149695.htm TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP的任务是从一台计算机将文件传送到另一台计算机,不受操作系统的限制. 需要进行远程文件传输的计算机必须安装和运行ftp客户程序. ssh: http://baike.baidu.com/subview/16184/5909252.htm SSH 为 Secure Shell

SFTP基于Key多进程批量并发上传文件实现案例(python)

最近在研究Paramiko,Paramiko可以非常方便的实现基于SSH协议的远程连接,可以基于 口令,也可以无口令RSA非对称密钥,亦可以实现SFTP上传下载操作,安全高效,再结合多 进程或者是多线程就可以实现并行处理,写了一个简单的SFTP基于Key多进程批量并发上传 文件的实现案例,供以后参考. 安装加密模块和Paramiko模块 下载:pycrypto-2.6.1.tar.gz paramiko-1.10.1.tar.gz 安装: tar -zxf pycrypto-2.6.1.tar.

在 Linux 中配置 SFTP 环境

做运维的朋友,应该经常会碰到这样的问题,研发需要新上一个web项目,需要上传文件到服务器上,并且仅仅是上传项目,解决方法一边有两种,sftp和ftp,今天讲如何使用sftp让系统用户用户上传项目的权限,并且实现chroot和无法使用ssh登录到系统: SFTP是指SSH文件传输协议(SSH File Transfer protocol)或安全文件传输协议(Secure File Transfer Protocol),它提供了可信数据流下的文件访问.文件传输以及文件管理功能.当我们为SFTP配置c

Linux 如何配置 SFTP 来代替单一ftp应用

SFTP在Linux下是一个很方便很安全的文件传输工具,我常常用它在Linux服务器上替代传统的ftp来传输文件.众所周知SFTP账号是基于SSH账号的,默认情况下访问服务器的权限很大,下面的教程就是教你像ftp那样限制SFTP账号相关的访问权限. 必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成. 如何查看自己服务器上的ssh版本?尝试以下命令 $ ssh -V 具体实施步骤 1. 我们需要创建一个用户