Tag: jsch

使用JSch使用密码进行身份validation时获取“Auth取消”

我正在尝试从Java执行Unix命令。 我正在使用JSch库。 这是我的代码: try{ Session session = new JSch().getSession(“*****”, “****”, 22); session.setPassword(“****”); java.util.Properties config = new java.util.Properties(); config.put(“StrictHostKeyChecking”, “no”); session.setConfig(config); session.connect(); Channel channel=session.openChannel(“exec”); ((ChannelExec)channel).setCommand(“pwd”); InputStream in=channel.getInputStream(); byte[] tmp=new byte[1024]; while(in.available()>0){ int i=in.read(tmp, 0, 1024); System.out.print(new String(tmp, 0, i)); } channel.disconnect(); session.disconnect(); }catch(Exception e){ System.out.println(org.apache.commons.lang3.exception.ExceptionUtils.getStackTrace(e)); } 我一直收到“validation取消”错误。 在我可以执行任何操作之前,我无法登录。 这是所要求的日志: INFO: Connecting to ***** port 22 INFO: […]

如何在java中连接到主机后读取SSH密钥-sig对标题(用于生成SSH密码)?

我想在连接到java中的远程主机后读取SSH密钥 – sig对标题(用于生成SSH密码)。 我正在使用JSch客户端库进行SSH连接。 在主机上执行某些操作后,SSH密码会更改,因此每次我需要从key-sig对生成新的SSH密码才能登录。 有没有办法可以通过编程方式阅读横幅广告? 下面是在尝试通过客户端控制台(PuTTY)进行SSH时出现密码提示的key-sig对横幅的片段。 NbwDZIAGjGS90zisB + jY9Kqrmu67PyMwas6S6jY68f + QL4l + TJDyHWUTGtzluflwY + Z / bHn0mXtdIkgxsoiVm5nCnNi0viMUKq / dPygXEZ0uDma9Co0WHI25UNLn525pNSuT1At5wTEEinH7xKiypIKDNVxxeprshtsd4rcirTUQveTBEbAgABJtzHrSNHmqs2Rui4NbWRqFDabft4uID6qwtl5wxAoNhh0Z9FT1r3kCK0FoLxcp9nlyQ6kD2rmp1sQG1SvQky2ATa9sD + ZBBAhlvwbOns5fWRE8A + ElQtkvyB8IxCS59cWa8T5rXm7G57x9uExEn57Vn3ZBuKP9Tg == bS6VdF5I167P03QMkM88k2cwS9KtyEfgT6Ff2e0iIvxdBMSKq453953J // vuriZk + mKjiEX0 / RzrQSVIAzOYXFTtsZrIh7ER2IS0LoaXQ5izk4aobVq3BtiU + EknM3Qcy7IpVbwmQ7ZmCmjtOL +的Ux / n8vEDLYdk8dVeFJpzp4s53MrRkm4RC9yHgROW6HJxYscmQa + xah5ymRJyC2mt4aFfeQjAUZIEBhncLQge6nGEMybXmail1bgqhinE5xem + K6M2Ad3 + 0ahhW7NflWC4LjweTSHfsItfDwsb8i280LuYuw6w07LTadkn40AfpnVXOiFM + eUpUeIkw16RzduCew ==

通过JSch执行shell命令时随机获取空输出

我试图通过JSch(空间检查命令)使用JSch在Linux命令下执行: df -h -P |awk ‘{print $6″ “$4}’ |awk ‘{ if ($1 == “/On_Demand”) {print}}’ | awk ‘{print $2}’ | awk ‘{ if ($1 ~ /M/) {print ($1*1)} else if($1 ~ /G/) {print ($1*1024)} else if($1 ~ /T/) {print ($1*1024*1024)} else if($1==0) {print ($1*1)} else if($1 ~ /K/) {print ($1/1024)} else {print (“-1”)}}’ 备份命令: export […]

使用JSch库在Java中获取会话和SFTP通道

我正在为SFTP使用JSch库。 我需要在SFTP服务器上做几个操作,比如移动其他目录中的远程文件,拉文件等。对于所有这些操作,我需要Session然后从中获取Channel然后将其转换为ChannelSftp 。 这是多余的步骤。 所以我想把它抽象成一个private方法。 private ChannelSftp getChannelSftp() throws JSchException { java.util.Properties config = new java.util.Properties(); config.put(“StrictHostKeyChecking”, “no”); JSch jsch = new JSch(); Session session; session = jsch.getSession(VENDOR1_USERID, VENDOR1_SERVER, VENDOR1_PORT); session.setPassword(VENDOR1_PASSWORD); session.setConfig(config); session.connect(); ChannelSftp channelSftp = null; Channel channel = session.openChannel(“sftp”); channel.connect(); channelSftp = (ChannelSftp) channel; return channelSftp; } 但是在SFTP操作之后,我需要断开与通道和会话的连接。 使用上面的方法,虽然我可以在调用方法中断开Channel但是我不能断开与Session连接,因为我没有可能是泄漏的实例所以我现在将它分成getSession()方法,现在ChannelSftp创建是所有方法都重复。 什么是更好的设计/重构方法 ? private Session […]

如何将文件从目录A移动到远程服务器中的目录B?

我正在使用JSch连接到由GWT制作的网站中的SFTP。 我读过sftpChannel.get() , sftpChannel.rename() , sftpChannel.rm()一个小例子。 但我没有找到将文件从远程服务器复制到远程服务器b目录的解决方案。 例如,我想将文件从/appl/user/home/test/temp复制到/appl/user/home/test/ 。 Filename = abc.jpg 。 我在这里惊呆了几个小时,因为网络的大多数解决方案是从远程服务器到本地的文件,或者从本地上传到远程服务器的文件。 String existingfile = “abc.jpg”; String newfile = “123.jpg”; FileDirectory = “/appl/user/home/test/”; sftp.cd(FileDirectory+”temp/”); sftp.rename(newfile, FileDirectory+newfile); 比方说, abc.jpg存在于/appl/user/home/test/ 我在/appl/user/home/test/temp/上传了一个123.jpg 。 现在,我想将123.jpg移动到/appl/user/home/test/并删除/appl/user/home/test/中的abc.jpg 。 我该怎么办?

使用JSCH Java反向SSH隧道

是否可以使用JSCH进行反向ssh连接? 如果不是,是否还有其他纯Java库可用于进行反向隧道SSH连接? 我想模仿的命令类似于: ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress

JSch从字符串中添加私钥

我将SFTP的密钥对文件的内容作为字符串。 我需要使用JSch添加内容,但addIdentity只接受文件路径。 无论如何我能做到吗? 我看到KeyPair类有一个方法 – KeyPair load(JSch jsch, byte[] bytes, byte[] bytes1) 我不确定这是做什么的。

在Jsch中设置ASCII模式

我需要克服我目前正在使用的Unix-Windows文件格式(LF到CRLF)问题。 我使用的ftp客户端是Jcraft的Jsch。 虽然我遇到了可以设置的标志,但在线文档非常简单 SSH_FXF_TEXT_MODE 启用ASCII模式,但我没有看到我应该在代码本身设置这个,我也没有在这些Javadocs中看到它 以下是我自己尝试的解决方法。 “Newly Added”行显示我如何获取文件并将其转换为ASCII编码的字符串,然后使用channelSftp put方法将其传输。 最初我会把文件本身放在一边。 final JSch jsch = new JSch(); final Session session = jsch.getSession(username, host); session.setPassword(password); session.connect(); final Channel channel = session.openChannel(“sftp”); channel.connect(); final ChannelSftp channelSftp = (ChannelSftp) channel; channelSftp.cd(destDir); File file = new File(pathName); String content = FileUtils.readFileToString(file, “US-ASCII”); // Newly Added channelSftp.put(content, fileToTransfer.getName()); 请注意,为了清楚了解代码段,我省略了exception处理和其他做法。 这种解决方法是否会成功,或者Jsch看似默认的二进制模式是否会覆盖ASCII编码的字符串并像往常一样进行传输? 我会测试它,我只是想知道你是否有人能直接告诉我? […]

使用JSch连接SFTP时如何选择网络接口

我正面临着由JSch创建到远程SFTP服务器的会话的问题: 我用来通过shell连接sftp服务器的命令是: sftp -o BindAddress=SOME_IP_ADDRRESS myUserName@HOST_IP_ADDR 并且它的工作正常,但是当我尝试Java(JSch)时,我得到一个超时exception。 Java代码是 /* KEY_FILE_NAME = is a file with rsa public key */ ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource(KEY_FILE_NAME).getFile()); JSch jsch = new JSch(); jsch.addIdentity(file.getAbsolutePath()); Properties hash = new Properties(); hash.put(“StrictHostKeyChecking”, “no”); logger.debug(“SSh Server Host name >>” + SSH_SERVER_HOST_NAME + ” || User Name >>” + […]

使用JSch拒绝权限

我正在尝试使用JSch从sftp服务器检索一些文件,但我收到以下错误。 3: Permission denied at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846) at com.jcraft.jsch.ChannelSftp._realpath(ChannelSftp.java:2340) at com.jcraft.jsch.ChannelSftp.cd(ChannelSftp.java:342) at com.company.common.sftp.impl.managedFile.moveFiles(managedFile.java:712) 这是代码: private List moveFiles(String prefixFileName, String path) { Session session = getSession(); Channel channel = connect(session); ChannelSftp channelSftp = null; try { channelSftp = (ChannelSftp)channel; channelSftp.cd(_workingDir); … } … finally { channel.disconnect(); session.disconnect(); } } public Session getSession() { Session session = null; […]