精华内容
下载资源
问答
  • sftp指定目录
    千次阅读
    2021-09-24 16:39:03

    默认连接都是访问根目录,不符合某些需求,所以进行目录限制。

    现在需求是,登录后限制在/app,可是由于权限原因,不能ChrootDirectory直接配置/app,不然不能连接,所有进行连接后跳转到/app目录。

    主要对sshd的配置
    编辑配置文件

    vim /etc/ssh/sshd_config
    

    将下面的内容加到最后,保存

    #Subsystem      sftp    /usr/libexec/openssh/sftp-server
    Subsystem sftp internal-sftp 
    Match Group sftp  #限制sftp组
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp -d /app  #跳转到app目录
        ChrootDirectory /  #指定根目录
    
    Match User ldd  #限制用户
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp -d /app 
        ChrootDirectory /
    

    重启sshd

    systemctl restart sshd
    

    注意点。目录必须是ChrootDirectory指定的目录必须是root所有,而且必须是755权限,否则sftp连不上

    更多相关内容
  • java访问linux;通过linux主机ip,端口,用户名,密码,获取linux链接,输入文件路径可批量的下载linux文件,mian函数为测试代码
  • = null) { if (sftp.isConnected()) { sftp.disconnect(); } } if (session != null) { if (session.isConnected()) { session.disconnect(); } } } public ArrayList<String> listFiles(String dir) throws ...

    引用Jsch包
    Maven

    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.54</version>
    </dependency>
    

    Gradle

    compile group: 'com.jcraft', name: 'jsch', version: '0.1.54'
    

    提示:SFTP默认端口22,FTP默认端口21

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Properties;
    import java.util.Vector;
    
    import org.apache.commons.io.IOUtils;
    
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.ChannelSftp.LsEntry;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.JSchException;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.SftpException;
    
    public class SFTPUtil {
     
        private ChannelSftp sftp;       
        private Session session;  
        private String username; 
        private String password;  
        private String privateKey;  
        private String host;  
        private int port;  
            
        public SFTPUtil(String username, String password, String host, int port) {  
            this.username = username;  
            this.password = password;  
            this.host = host;  
            this.port = port;  
        } 
        
        public SFTPUtil(String username, String host, int port, String privateKey) {  
            this.username = username;  
            this.host = host;  
            this.port = port;  
            this.privateKey = privateKey;  
        }  
        
        public SFTPUtil(){}  
        
        public ChannelSftp getChannelSftp() {
        	return this.sftp;
        }
        
        public void login(){  
            try {  
                JSch jsch = new JSch();  
                if (privateKey != null) {  
                    jsch.addIdentity(privateKey);// 设置私钥  
                }  
        
                session = jsch.getSession(username, host, port);  
               
                if (password != null) {  
                    session.setPassword(password);    
                }  
                Properties config = new Properties();  
                config.put("StrictHostKeyChecking", "no");  
                    
                session.setConfig(config);  
                session.connect();  
                  
                Channel channel = session.openChannel("sftp");  
                channel.connect();  
        
                sftp = (ChannelSftp) channel;  
            } catch (JSchException e) {  
                e.printStackTrace();
            }  
        }    
        
        public void logout(){  
            if (sftp != null) {  
                if (sftp.isConnected()) {  
                    sftp.disconnect();  
                }  
            }  
            if (session != null) {  
                if (session.isConnected()) {  
                    session.disconnect();  
                }  
            }  
        }  
      
        public ArrayList<String> listFiles(String dir) throws SftpException{
        	ArrayList<String> files = new ArrayList<String>();
        	sftp.cd(dir);
        	Vector<String> lss = sftp.ls("*");
        	for (int i = 0; i < lss.size(); i++)
        	{
        	    Object obj = lss.elementAt(i);
        	    if (obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry)
        	    {
        	        LsEntry entry = (LsEntry) obj;
        	        if (true && !entry.getAttrs().isDir())
        	        {
        	        	files.add(entry.getFilename());
        	        }
        	        if (true && entry.getAttrs().isDir())
        	        {
        	            if (!entry.getFilename().equals(".") && !entry.getFilename().equals(".."))
        	            {
        	            	files.add(entry.getFilename());
        	            }
        	        }
        	    }
        	}
        	return files;
        }
        
        public void download(String fileName, String savedir) throws SftpException, IOException{  
            InputStream is = sftp.get(fileName);
            
            System.out.println("fileName:"+fileName+"; savedir:"+savedir);
            
            FileOutputStream out = new FileOutputStream(new File(savedir + "\\" +fileName));
            IOUtils.copy(is,out);
            is.close();
            out.close(); 
        }
        
        public void delete(String fileName) throws SftpException {
        	sftp.rm(fileName);
        }
        
    }
    

    调用:

    SFTPUtil sftp = new SFTPUtil(ftpUsername, ftpPassword, ftpUrl, ftpPort);
    sftp.login();
    ArrayList<String> ftpFileArr = sftp.listFiles(ftpPath);
    for (int ii = 0; ii < ftpFileArr.size(); ii++) {
    	String fileName = ftpFileArr.get(ii);
    	byte[] bytes = fileName.getBytes("iso-8859-1");
        String string = new String(bytes, "UTF-8");
        sftp.download(fileName, filePath);//下載文件到本地
        sftp.delete(ftpPath + fileName);//刪除ftp文件
    }
    sftp.logout();
    
    展开全文
  • 在工作或者学习的时候,我们常常会遇到这样的需求,限制一个Linux用户,让他只能在指定目录下进行添加、修改、删除操作,并且只能使用sftp登录服务器,不能用ssh操作。这些可以通过配置sftp服务实现。 方法如下 ...
  • Linux shell脚本实现sftp文件目录下载

    千次阅读 2022-03-11 14:20:09
    # 功能:下载数据到 本地目录 # SFTP 配置信息 # SFTP 帐号 USER=jijian # SFTP 密码 PASSWD=jj # SFTP目录 SRC=/home/jijian # 下载到本地的目录 DESC=/home/databackup # IP HOST=10.2.5.142 # 端口 PORT=22 SRC...

    主要脚本代码如下,亲测可用,下载命令之前需要加sudo

    #!/bin/bash
    # 作者:zwa
    # 功能:下载数据到 本地目录
    
    # SFTP 配置信息
    # SFTP 帐号
    USER=jijian
    # SFTP 密码
    PASSWD=jj
    # SFTP目录
    SRC=/home/jijian
    # 下载到本地的目录
    DESC=/home/databackup
    # IP
    HOST=10.2.5.142
    # 端口
    PORT=22
    
    SRC_DIR=${SRC}$1
    DESC_DIR=${DESC}$1
    
    # 下载文件
    lftp -u ${USER},${PASSWD} sftp://${HOST}:${PORT} <<EOF
    mirror  ${SRC_DIR} ${DESC_DIR}
    by
    EOF
    
    
    
    展开全文
  • 1、需求说明:在一些生产环境中,有部分运营人员需要批量下载并上传专题,配置FTP服务进行权限控制相对比较复杂,也存在安全隐患,为了不让用户浏览除指定目录外得内容,我们可以通过SFTP限制允许访问得目录2、创建...

    1、需求说明:

    在一些生产环境中,有部分运营人员需要批量下载并上传专题,配置FTP服务进行权限控制相对比较复杂,也存在安全隐患,为了不让用户浏览除指定目录外得内容,我们可以通过SFTP限制允许访问得目录

    2、创建系统用户

    # useradd admin && echo 'admin123' | passwd --stdin admin

    3、配置sftp的账户权限

    修改文件/etc/ssh/sshd_config之前先备份文件cp sshd_config{,.bak}

    Subsystem sftp internal-sftp

    Match User admin # 需要限制得用户admin

    ChrootDirectory /data/www/Appcode # 允许admin用户访问得指定目录

    X11Forwarding no

    AllowTcpForwarding no

    ForceCommand internal-sftp

    效果如图所示:

    4、设置允许用户访问目录的权限

    Sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755

    # chown -R root:root /data/www/Appcode/

    # chmod 755 /data/www/Appcode/

    # /etc/init.d/sshd restart

    5、通过重新启动SSHD后我们通过SFTP连接服务器

    登录后的目录定位到了指定的目录"/data/www/Appcode"目录,不能浏览系统的其他目录,也不能切换目录,用户可正常浏览下载目录中的文件,但是用户无法上传文件。即使在/data/www/Appcode/下属主为admin的目录,用户也无法上传。此时需要在/data/www/Appcode/下建立属主属组为admin的目录,并给/data/www/Appcode目录设置acl权限即可

    # mkdir /data/www/Appcode/test

    # chown admin:admin /data/www/Appcode/test

    # setfacl -m u:admin:rwx /data/www/Appcode

    6、setfacl报错Operation not supported

    setfacl: /data/www/Appcode: Operation not supported

    一般情况下(ext4),默认acl支持都是加载的.但如果遇到二般情况,文件系统加载时没有指定acl.我们可以能过编辑/etc/fstab文件,找到对应得分区指定acl权限,然后重新挂载分区即可。

    # mount -o remount /data

    # setfacl -m u:admin:rwx /data/www/Appcode

    展开全文
  • 首先创建用户useradd lus1passwd lus1我这里配置lus1这个用户目录,为sftp指向目录,即/home/lus1/vim /etc/ssh/sshd_config//这个记得要在原有的配置文件注释掉#Subsystem sftp /usr/libexec/openssh/sftp-...
  • 众所周知SFTP账号是基于SSH...Linux设置用户通过SFTP访问目录的权限方法sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。1.查看openssh软件版本,想s...
  • sftp递归目录下载文件

    千次阅读 2020-08-08 16:12:10
    在对账文件下载等多个场景,需要连接远程服务sftp下载文件。 注意:文件传输后需要生成结尾文件,当读取时判断文件传输已完成。 <dependency> <groupId>com.jcraft</groupId> <artifactId...
  • 需要创建一个特定用户,并且让用户读写指定目录以及子目录 2.修改属组权限 原来目录权限是属主可以读写,属组只可以读 因为要添加一个新的访问用户,所以要先把属组权限改成读写 $ sudo chmod -R g+w . $ ...
  • 以下限制了sftp用户组只能sftp 连接上去至指定目录(/projects/tms_prod),ssh 连接就提示只接受sftp 连接。方案具体流程如下:1. 创建用户及目录:mkdir-p/projects/groupaddsftp#新建组useradd-gsf...
  • 20190127 之前限制 ChrootDirectory 之后,需要对原有环境改造较多1....3、尝试了使用 ln 软连接 ,如果已经部署的网站较... ChrootDirectory 对于目录要求很严,必须所有人是 root ,供上传的子目录最好 chmod 7775. ...
  • 1、创建登录用户及用户组 --可以根据自身磁盘挂载情况制定用户home目录 -d 选项 groupadd test1mkdir -p /data/test1 useradd test1 -g test1 -d /data/test1 echo "123" |passwd --stdin test1 &>/dev/null...
  • stringHashMap =new HashMap<...try {channel = (Channel) session.openChannel("sftp");channel.connect(10000000);ChannelSftp sftp = (ChannelSftp) channel;try {sftp.cd(sPath);} catch (SftpException...
  • Linux下的SFTP C语言客户端,包括SFTP下载、上传、list目录和创建目录,依赖libssh2库,该库可自行下载编译安装。 全部源代码,可编译和测试。
  • 1.切换到root用户 ...#新建用户,归于visitors组,并指定新建用户的sftpuser1的默认目录 useradd -d /home/visitors/sftpuser1 -g visitors sftpuser1 #验证sftpuser1所属组 groups sftpuser1 #设置sf
  • Linux 下创建 sftp 用户并限定目录###1、创建 sftpUser 用户组[root@XXX ~]# groupadd sftpUser###2、创建 sftpUser 用户并指定目录[root@XXX ~]# useradd -d /home/sftpUser -s /sbin/nologin -g sftpUser sftpUser...
  • 1.编辑ssh中的sftp的配置,命令可能是:vi /etc/ssh/sshd_config在这个文件中最后加入#限制sftp组的用户使用sftp时在自己的home目录下Match Group sftp#这里写重写根目录成登录用户的根目录下ChrootDirect...
  • sftp和ftp是两种协议是不同...1.查看openssh软件版本,想sftp服务用户只能访问特定的文件目录,版本需要4.8以上复制代码代码如下:[root@localhost ftp]# rpm -qa | grep opensshopenssh-server-5.3p1-81.el6_3.x86_64...
  • Linux Sftp 下载整个文件目录

    千次阅读 2019-03-12 10:00:03
    Linux Sftp 下载整个文件目录 get -r /A/B/. 有两个特点: 1:使用-r参数 2:在目录后面使用"."号 这样的话就可以把/A/B 目录和子目录里面的文件全部下载到本地了。 ...
  • # 获取sftp指定目录下的所有文件路径 filenames = getAllFilePath(sftp, remote) # 下载所有文件 for fn in filenames: filename = os.path.split(fn)[-1] sftp.get(fn, local + os.sep + filename) #关闭...
  • 根据输入参数判断是文件还是目录,进行上传和下载 本地参数local需要与远程参数remote类型一致,文件以文件名结尾,目录以\结尾 上传和下载的本地和远程目录需要存在 异常捕获 2.代码实现 #!/usr/bin/python # ...
  • 1.jsch官方API查看地址(附件为需要的jar)http://www.jcraft.com/jsch/2.jsch简介JSch(Java Secure Channel)是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且...SFTP(Secure File Transfer Protocol)安全...
  • 进入sftp 指定目录

    万次阅读 2013-09-24 15:50:42
    1. 看一下sftp服务器的设置。 root path :为c盘upload目录, 那么程序会将upload目录视为默认...//进入sftp指定目录,程序报错。 解决方法,将sftp 对应rootpath设置清空即可。。。 这点鸟事。话费偶好久时间。。。
  • C#操作SFTP

    2019-10-15 10:08:33
    连接/断开SFTP,上传文件、移动文件、删除文件、下载文件,获取文件目录
  • 1.创建sftp用户的主根目录[root@Oracle-2 ~]# mkdir -p /home/sftp[root@Oracle-2 ~]# chmod -R 755 /home/sftp2.创建sftp用户组和一个sftp用户blog[root@Oracle-2 ~]# groupadd sftp[root@Oracle-2 ~]# useradd -g ...
  • SFTP 限定登录用户在指定目录

    千次阅读 2015-05-16 11:44:51
    使用sftp做文件传输时,经常遇到将登录用户限定到制定目录的情景, 网上乱找了一堆资料,总算实现了,记录一下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,558
精华内容 16,623
关键字:

sftp指定目录