Tag: jsch

JSch Shell通道在继续之前逐个执行命令测试结果

我有一个连接SSH shell的程序。 我能够执行命令并从中读取输出。 但我有一个新的要求。 现在,如果成功执行下一个命令,我需要执行命令并读取输出。 我使用过这个问题的程序: JSch问题 – 无法检索完整的命令输出 public class SshConnectionManager { private static Session session; private static ChannelShell channel; private static String username = “”; private static String password = “”; private static String hostname = “”; private static Session getSession(){ if(session == null || !session.isConnected()){ session = connect(hostname,username,password); } return session; } […]

在尝试通过KeyPairGenerator加载RSA私钥时,JSch获得“无效私钥:”

我正在使用java.security.KeyPairGenerator来生成RSA密钥对,然后尝试通过Jsch(0.1.49)中提供的KeyPair类加载私钥。 代码: public static void main(String[] args) { String header = “—–BEGIN RSA PRIVATE KEY—–“; String footer = “—–END RSA PRIVATE KEY—–“; KeyPairGenerator keyPairGenerator; try { keyPairGenerator = KeyPairGenerator.getInstance(“RSA”); keyPairGenerator.initialize(2048, new SecureRandom()); PrivateKey privateKey = keyPairGenerator.genKeyPair().getPrivate(); String key = new String(Base64.encodeBase64(privateKey.getEncoded())); StringBuffer pem = new StringBuffer(header+”\n”); int len=key.length(); for( int idx=0 ; idx < len […]

在JSch中使用channelsftp传输文件夹和子文件夹?

我想使用channelsftp传输文件夹和子文件夹。 我可以使用channelsftp.put(src,dest)命令成功传输文件channelsftp.put(src,dest)但这对文件夹不起作用(至少我无法使其工作)。 那么有人可以解释我如何使用channelsftp传输文件夹和子文件夹?

JSch:如何保持会话活跃起来

我正在使用SSH编写用于静态路由管理的Java GUI程序。 我的代码如下: import com.jcraft.jsch.*; import java.io.*; public class Konsep { String status; static String username; static String hostname; String inputcommand; String output; static Session session; JSch jsch = new JSch(); public String status(String stringstatus) { stringstatus = status; return stringstatus; } public String InputCommand(String inputcommandstatus) { inputcommandstatus = inputcommand; return inputcommandstatus; } public void […]

JSch中’shell’通道和’exec’通道之间有什么区别

我希望能够将Java应用程序中表示为字符串的许多连续命令发送到SSH服务器以供执行。 我应该使用: Channel channel = session.openChannel(“shell”); -要么- Channel channel = session.openChannel(“exec”);

使用JGit键可以安全地访问Git存储库

我正在使用JGit访问远程Git仓库,我需要使用SSH 。 JGit使用JSch提供安全访问。 但是,我不确定如何为JGit设置密钥文件和知道的hosts文件。 我试过的如下。 使用子类化JSchConfigSessionFactory创建SshSessionFactory的自定义配置: public class CustomJschConfigSessionFactory extends JschConfigSessionFactory { @Override protected void configure(OpenSshConfig.Host host, Session session) { session.setConfig(“StrictHostKeyChecking”, “yes”); } } 在我访问远程Git仓库的类中,执行以下操作: CustomJschConfigSessionFactory jschConfigSessionFactory = new CustomJschConfigSessionFactory(); JSch jsch = new JSch(); try { jsch.addIdentity(“.ssh/id_rsa”); jsch.setKnownHosts(“.ssh/known_hosts”); } catch (JSchException e) { e.printStackTrace(); } SshSessionFactory.setInstance(jschConfigSessionFactory); 我无法弄清楚如何将此JSch对象与JGit关联,以便它可以成功连接到远程存储库。 当我尝试使用JGit克隆它时,我得到以下exception: org.eclipse.jgit.api.errors.TransportException: git@git.test.com:abc.org/test_repo.git: reject HostKey: git.test.com at […]

使用JSch执行的命令与SSH终端的行为不同(绕过确认提示消息“是/”否“)

注意:我登录设备而不是计算机,因此我登录配置模式(而不是非配置模式)。 我在Java中使用JSch库,使用SSH协议登录。 我这样登录: channel = con.openChannel(“shell”); channel.connect(); 在某些情况下,当我通过shell发送需要su (配置模式)权限(更改配置)的命令时,此代码会绕过提示确认消息 – 这可能会阻止其他用户更改配置。 如果我使用SSH客户端/终端手动输入命令,我必须输入yes进行确认。 有谁知道为什么? 谢谢。 [ ] 当我通过JSch登录时,我甚至可以执行配置命令,当我没有向要执行的命令数组插入“是”时。

JSch记录器 – 我在哪里可以配置级别

如何配置JSch记录器的级别? 是否可以通过XML配置Log4J?

如何在String中获取jsch shell命令输出

我使用JSCH -SSH库在“shell”通道中执行命令,但无法找到办法做两件事: – 1)如何查找命令是否在远程unix盒上完全执行? 2)如何捕获String中的命令输出,而不是在System.out控制台上打印它? 下面是我的代码片段,可以在system.out上显示shell命令输出 注意:我不想使用“exec”通道,因为它为每个命令启动一个新进程,并且不记得导出的“会话”变量。 我必须使用“shell”频道。 下面是我的代码片段。 任何帮助表示赞赏。谢谢你的时间。 try{ String commandToRun = “ls /tmp/*.log \n”; if(channel.isClosed()) channel=session.openChannel(“shell”); byte[] bytes = commandToRun.getBytes(); ByteArrayInputStream bais=new ByteArrayInputStream(bytes); channel.setInputStream(bais); InputStream ins=channel.getInputStream(); channel.connect(); channel.setOutputStream(System.out);//This prints on console. Need 2 capture in String somehow? //in-efficient way to allow command to execute completely on remote Unix machine //DO NOT know […]

JSCH – 无效的私钥

我使用netbeans 7.2运行JDK 1.7和Windows 7.我使用putty-keygen生成了一个SSH私钥和公钥对(SSH2-2048位)。 私钥没有任何密码。 我现在正尝试使用SFTP连接到其中一台主机。 但是当我传递私钥(ppk)来设置Identity时,代码返回无效的私钥错误。 我在WinSCP中使用相同的私钥连接到同一主机,它工作正常。 请帮我解决错误。 这是我的代码: JSch jsch = new JSch(); Session session = null; try { jsch.addIdentity(“D:\\TEMP\\key.ppk”); session = jsch.getSession(“tiabscp”, “ssiw.support.qvalent.com”, 22); session.setConfig(“StrictHostKeyChecking”, “no”); //session.setPassword(“”); session.connect(); Channel channel = session.openChannel(“sftp”); System.out.println(“Getting connected”); channel.connect(); System.out.println(“connected successfully”); ChannelSftp sftpChannel = (ChannelSftp) channel; sftpChannel.get(“remotefile.txt”, “localfile.txt”); sftpChannel.exit(); session.disconnect(); }catch (JSchException e) { e.printStackTrace(); }catch […]