×

channelsftp创建文件夹

channelsftp创建文件夹(channelsftp上传文件)

admin admin 发表于2023-04-07 10:30:09 浏览70 评论0

抢沙发发表评论

本文目录一览:

ftp远程创建文件夹错误

1、查看ftp服务器是gssftp 还是vssftp 还是serveru

2、确认是否中文问题

3、确认你对文件夹是否有读写权限。

提示Access is denied 明显你对文件夹没有读写权限,如果是linux系统 把文件夹设置读写执行权限即可。

ftp不能新建文件夹

ftp不能新建文件夹是设置错误造成的,解决方法为:

1、打开后,找到左上角的【站点】并用鼠标左键点击。

2、在弹出的菜单中【选择站点管理器】,图中箭头已经指出。

3、点击站点管理器后,选择【新建站点】。

4、创建新站点的时候站点名称可以自拟,我这里以我的网站为名。

5、创建好后,接下来就是比较重要的一部了,我们在箭头所指的方向输入IP地址(包括计算机IP或者英文类的服务器地址或网站地址)、用户名、密码。

6、连接成功后我们就可以看到网站上面的信息,新建文件夹了。

SFTP 怎么往服务器上上传整个文件夹?

使用SecureSRT中的SFTP传递文件夹时,有个小细节值得注意一下:

1)在文件夹名dirname后加上'/',传输后,目标位置没有新建文件夹dirname,只有dirname文件夹下的各个文件。

如:

sftp get -r smsrc/

2)在文件夹名dirname后不加'/',传输后,目标位置新建文件夹dirname,所有文件位置新建文件夹dirname下。

如:

sftp get -r smsrc

sftp创建新账户并指定目录

首先

你的openssh-server版本至少得是4.8p1,因为配置权限需要版本添加的新配置项ChrootDirectory来完成。

如何查看自己服务器上的ssh版本?大家可以尝试以下命令:

# ssh -V 

步骤:

1. 我们需要创建一个用户组,专门用于sftp用户 

# groupadd sftpusers    ps我里的用户组是sftpusers

2. 我们创建一个用户user

# useradd -s /bin/false -G sftpusers user      ps注意这里我们将user用户的shell设置为/bin/false使他没有登陆shell的权限

# passwd user   ps设置user用户密码

3. 编辑/etc/ssh/sshd_config 

找到Subsystem这个配置项,将其修改为

Subsystem sftp internal-sftp 

然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问自己的文件夹

Match Group sftpusers 

X11Forwarding no

AllowTcpForwarding no

ForceCommand internal-sftp

ChrootDirectory /data/sftp/%u     #需在 /data/sftp/  创建user文件夹,该文件夹就是登录的sftp用户目录

保存并关闭

4. 修改user用户所在文件夹的权限,让其属于root用户 

# chown root /data/sftp/user

5. 重启sshd服务 

# service sshd restart 

6. 测试用户账号

# ssh user@localhost 

ps连接会被拒绝,证明该用户没有ssh shell登录的权限

# sftp user@localhost 

登陆后你会发现你的账号无法切换到除自己本身目录之外的地方;ps或者登录失败,看下面可能出现的问题;

问题:

1,如果在链接服务器的时候出现下面的提示:

Write failed: Broken pipe 

Couldn't read packet: Connection reset by peer 

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root,权限是750 或者755。

解决:设置user目录为root权限,# chown root:user /data/sftp/user     #chmod 750 /data/sftp/user

2,Sftp用户登录后不能在本目录操作:

是因为登录后的目录是root权限,需将sftp账号赋予root权限,操作方法将  /etc/passwd 文件中对应的sftp的用户ID修改为0,这样就可以有权限操作登录后的目录了(还有其他赋予权限方法,ps另行查找)。Eg:user:x:503:505::/home/darops:/bin/false  将503改为0-channelsftp创建文件夹

sftp免密用java怎么调用

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Properties;

import java.util.Vector;

import org.apache.commons.lang.ArrayUtils;

import com.huawei.bme.commons.om.log.DebugLog;

import com.huawei.bme.commons.om.log.LogFactory;

import com.huawei.icity.commons.constants.KeyConstant;

import com.huawei.icity.commons.constants.NumberConstant;

import com.huawei.icity.commons.exception.SPMException;

import com.huawei.icity.commons.log.IcityLogFactory;

import com.huawei.icity.commons.log.IcityRuntimeLog;

import com.huawei.icity.commons.sysconfig.StaticInitData;

import com.huawei.icity.commons.utils.StringTools;

import com.huawei.icity.omp.common.util.CommonTools;

import com.huawei.icity.omp.interfaces.hint.constant.TimetaskConstants;

import com.huawei.mdmc.bfm.cms.assist.common.domain.SingleTableModel;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.ChannelS;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpException;

/**

* SFTP公共处理类 〈提供SFTP文件上传,下载,获取指定目录 下文件名集合, 获取指定目录 下文件集合等方法

*

* @author mKF75022

* @version iCity Manager V100R002 2012-7-3

* @since iCity Manager V100R002C01

*/

public class SFTPTool

{

/**

* 调测日志记录器。

*/

private static final DebugLog DEBUGGER = LogFactory.getDebugLog(SFTPTool.class);

/**

* 运行日志记录器。

*/

private static final IcityRuntimeLog RUNTIMELOGGER = IcityLogFactory

.getRuntimeLog(SFTPTool.class);

/**

* Sftp客户端对象

*/

private ChannelSftp sftp = null;

/**

* SFTP IP地址

*/

private String ip;

/**

* SFTP 端口

*/

private String port;

/**

* SFTP 用户名

*/

private String userName;

/**

* SFTP 密码

*/

private String password;

/**

* SFTP上传模式:BINARY

*/

// private static final int BINARY_FILE_TYPE = 2;

/**

*

* 获取实例

*

* @return SFTPTool newinstance实例

*

*/

public static SFTPTool getNewInstance()

{

return new SFTPTool();

}

/**

* 初始化连接参数

*

* @param sftpIP

* IP

* @param sftpPort

* 端口

* @param sftpUsername

* 用户名

* @param sftpPassword

* 密码

*/

public void init(String sftpIP, String sftpPort, String sftpUsername, String sftpPassword)

{

// 获取SFTP连接信息

this.ip = sftpIP;

this.port = sftpPort;

this.userName = sftpUsername;

this.password = sftpPassword;

}

/**

* 从SFTP将符合约定命名的文件都下载到本地 .

*

* @param sftpDir

* SFTP服务器文件存放路径

* @param locDir

* 本地文件存放路径

* @param regex

* 指定文件名的格式

* @param needBackup

* 是否需要文件备份(true:是;false:否)

* @param needFullMatch

* 是否要求全局匹配(true:是;false:否)

* @param deleteFtpFile

* the delete ftp file

* @return 下载到本地的文件列表

*/

public ListFile synSFTPFileToLocal(String sftpDir, String locDir, String regex,

boolean needBackup, boolean needFullMatch, boolean deleteFtpFile)

{

ListFile files = new ArrayListFile(KeyConstant.INITIAL_NUMBER);

try

{

this.connect(ip, Integer.parseInt(this.port), userName, password);

// 获得FTP上文件名称列表

ListString ftpFileNameList = this.listFiles(sftpDir, regex, needFullMatch);

File localFile = null;

int size = ftpFileNameList.size();

// 根据每个FTP文件名称创建本地文件。

for (int i = 0; i size; i++)

{

// 下载源文件

localFile = this.download(sftpDir, locDir, ftpFileNameList.get(i), deleteFtpFile);

if (localFile.exists())

{

files.add(localFile);

}

if (needBackup)

{

// 备份源文件生成默认备份文件路径(据请求文件路径,生成同级目录的备份文件夹绝对路径)

String parentDir = sftpDir.substring(NumberConstant.INT_0,

sftpDir.lastIndexOf("/") + 1);

String backupDir = parentDir + TimetaskConstants.DEFAULT_BACKUP_DIRNAME;

boolean bakExists = openDir(backupDir);

if (bakExists)

{

this.uploadFile(backupDir, localFile);

}

else

{

boolean parentExists = openDir(parentDir);

if (parentExists)

{

s;

this.uploadFile(backupDir, localFile);

}

else

{

DEBUGGER.error("sftp parentDir no exisits ");

}

}

}

}

}

catch (Exception e)

{

DEBUGGER.error("synSFTPFileToLocal Exception", e);

}

finally

{

this.disconnect();

}

return files;

}

/**

* 连接sftp服务器

*

* @param sftpip

* ip地址

* @param sftpport

* 端口

* @param sftpusername

* 用户名

* @param sftppassword

* 密码

* @return channelSftp

* @throws SPMException

*/

public ChannelSftp connect(String sftpip, int sftpport, String sftpusername, String sftppassword) -channelsftp创建文件夹

{

sftp = new ChannelSftp();

try

{

JSch jsch = new JSch();

jsch.getSession(sftpusername, sftpip, sftpport);

Session sshSession = jsch.getSession(sftpusername, sftpip, sftpport);

RUNTIMELOGGER.info("Session created");

sshSession.setPassword(sftppassword);

Properties sshConfig = new Properties();

sshConfig.put("StrictHostKeyChecking", "no");

sshSession.setConfig(sshConfig);

// 设置超时时间为

sshSession.setTimeout(Integer.parseInt(StaticInitData.getFtpConnectTimeOut())

* NumberConstant.INT_1000);

sshSession.connect();

Channel channel = sshSession.openChannel("sftp");

channel.connect();

sftp = (ChannelSftp) channel;

// 设置文件类型

// ftpClient.setFileType(BINARY_FILE_TYPE);

// 与防火墙相关

// ftpClient.enterLocalPassiveMode();

}

catch (JSchException e)

{

DEBUGGER.error("JSchException : {}", e);

}

return sftp;

}

// /**

// * 创建指定文件夹

// *

// * @param dirName

// * dirName

// */

// public void mkDir(String dirName)

// {

// try

// {

// s;

// }

// catch (SftpException e)

// {

// DEBUGGER.error("mkDir Exception : " + e);

// }

// }

/**

* 创建指定文件夹

*

* @param dirName

* dirName

*/

public void mkDir(String dirName)

{

String[] dirs = dirName.split("/");

try

{

String now = s;

for (int i = 0; i dirs.length; i++)

{

boolean dirExists = openDir(dirs[i]);

if (!dirExists)

{

s(dirs[i]);

s(dirs[i]);

}

}

s;

}

catch (SftpException e)

{

DEBUGGER.error("mkDir Exception : " + e);

}

}

/**

* 打开指定目录

*

* @param directory

* directory

* @return 是否打开目录

*/

public boolean openDir(String directory)

{

try

{

s;

return true;

}

catch (SftpException e)

{

DEBUGGER.error("openDir Exception : " + e);

return false;

}

}