Tag: jsch

使用JSch sudo示例和Channel.setPty在远程主机上运行sudo命令

我在以下链接中使用了JSch Sudo示例: http://www.jcraft.com/jsch/examples/Sudo.java.html 并改变了一点,摆脱了所有对话框,因为我必须使用PuTTY将它用于EC2实例。 现在我的代码看起来像这样: import com.jcraft.jsch.*; import java.awt.*; import javax.swing.*; import java.io.*; public class sudo{ public static void main(String[] arg){ try{ JSch jsch=new JSch(); String host=null; if(arg.length>0){ host=arg[0]; } String privateKey = “my private key.pem”; jsch.addIdentity(privateKey, “”); Session session=jsch.getSession(“ec2-user”, “xx.xx.xx.xx”, 22); session.setPassword(“”); java.util.Properties config = new java.util.Properties(); config.put(“StrictHostKeyChecking”, “no”); session.setConfig(config); session.connect(); String command=”sudo mkdir […]

使用JSch 跳过Kerberos身份validation提示

我在下面的Ssh Java类中使用Connect()方法,以便使用SSH(JSch)连接到服务器并在服务器中运行命令。 问题是当运行Connect() ,服务器会提示下一条消息: Kerberos username [********]: Kerberos password for ********: 为了继续运行,我需要手动按两次Enter键,一个用于用户名,一个用于密码。 我试图添加下一个代码: // Press ENTER Robot r = new Robot(); r.keyPress(KeyEvent.VK_ENTER); r.keyRelease(KeyEvent.VK_ENTER); 但是这段代码只适用于用户名,我无法弄清楚当服务器要求输入密码时如何自动按ENTER键。 到目前为止,我已经尝试将另一个代码片段作为上面显示的代码片段 session.connect(); 线。 package ConnectSSH; import java.awt.Robot; import java.awt.event.KeyEvent; import java.io.*; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import com.jcraft.jsch.UserInfo; public class Ssh{ private static final String user = “********”; private static […]

如何阅读JSch命令输出?

我有以下代码: JSch jsch = new JSch(); jsch.setKnownHosts(dotSshDir + “/known_hosts”); jsch.addIdentity(dotSshDir + “/id_rsa”); Session session = jsch.getSession(userName, hostname, 22); session.connect(); ChannelExec channel = (ChannelExec) session.openChannel(“exec”); channel.setCommand(command); channel.setInputStream(null); channel.setErrStream(System.err); Reader reader = new InputStreamReader(channel.getInputStream()); char[] buf = new char[1024]; int numRead; while ((numRead = reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); result.append(readData); buf = […]

JSchException:算法协商失败

我试图通过ssh与JSch(0.1.44-1)连接到远程sftp服务器但在“session.connect();”期间 我得到这个例外: com.jcraft.jsch.JSchException: Algorithm negotiation fail at com.jcraft.jsch.Session.receive_kexinit(Session.java:529) at com.jcraft.jsch.Session.connect(Session.java:291) at com.jcraft.jsch.Session.connect(Session.java:154) … 来自JSch的日志: INFO: Connecting to xx.xx.xx.xxport 22 INFO: Connection established INFO: Remote version string: SSH-2.0-WeOnlyDo 2.0.6 INFO: Local version string: SSH-2.0-JSCH-0.1.44 INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 INFO: aes256-ctr is not available. INFO: aes192-ctr is not available. INFO: aes256-cbc is not available. INFO: aes192-cbc is not […]

永远不会使用jSch读取服务器响应

我试图通过连接jSch0.1.49库在unix服务器上运行命令。 我已经浏览了jSch提供的示例甚至http://sourceforge.net/apps/mediawiki/jsch/index.php?title=Official_examples 我能够从服务器读取响应并将其打印到控制台,但循环是* 永远不会结束 * g。 我怀疑为什么Channele一旦完成读取服务器的响应就不会关闭。 while (true) { while (inputStream.available() > 0) { int i = inputStream.read(buffer, 0, 1024); if (i < 0) { break; } System.out.print(new String(buffer, 0, i));//It is printing the response to console } System.out.println("done");// It is printing continuously infinite times if (channel.isClosed()) {//It is never closed System.out.println("exit-status: " + […]

通过JSch shell通道向服务器发送命令

我无法弄清楚如何通过JSch shell通道发送命令。 我这样做,但它不起作用: JSch shell = new JSch(); String command = “cd home/s/src”; Session session = shell.getSession(username, host, port); MyUserInfo ui = new MyUserInfo(); ui.setPassword(password); session.setUserInfo(ui); session.connect(); channel = session.openChannel(“shell”); fromServer = new BufferedReader(new InputStreamReader(channel.getInputStream())); toServer = channel.getOutputStream(); channel.connect(); toServer.write((command + “\r\n”).getBytes()); toServer.flush(); 然后我读取这样的输入: StringBuilder builder = new StringBuilder(); int count = 0; String line […]

为使用JSch通过SSH执行的命令提供输入/子命令

我正在尝试使用Jcraft Jsch库通过Java应用程序管理路由器。 我正在尝试通过TFTP服务器发送Router Config。 问题出在我的Java代码中,因为这适用于PuTTY。 这是我的Java代码: int port=22; String name =”R1″; String ip =”192.168.18.100″; String password =”root”; JSch jsch = new JSch(); Session session = jsch.getSession(name, ip, port); session.setPassword(password); session.setConfig(“StrictHostKeyChecking”, “no”); System.out.println(“Establishing Connection…”); session.connect(); System.out.println(“Connection established.”); ChannelExec channelExec = (ChannelExec)session.openChannel(“exec”); InputStream in = channelExec.getInputStream(); channelExec.setCommand(“enable”); channelExec.setCommand(“copy run tftp : “); //Setting the ip of TFTP […]

如何使用Java在远程系统上运行SSH命令?

我是这类Java应用程序的新手,正在寻找一些示例代码,介绍如何使用SSH连接到远程服务器,执行命令,并使用Java作为编程语言获取输出。

JSch算法协商失败

我尝试用Java连接SFTP服务器。 我收到了一个错误。 com.jcraft.jsch.JSchException:算法协商失败 这是POM: com.jcraft jsch 0.1.53 这是日志: INFO: Connecting to **”FTP ADRESS”** port 22 INFO: Connection established INFO: Remote version string: SSH-2.0-Maverick_SSHD INFO: Local version string: SSH-2.0-JSCH-0.1.53 INFO: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256 INFO: aes256-ctr is not available. INFO: aes192-ctr is not available. INFO: aes256-cbc is not available. INFO: aes192-cbc is not available. INFO: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521 INFO: […]

如何在使用JSch SFTP库时解析Java UnknownHostKey?

我正在运行一个java程序,我使用Java SFTP将文件从一个文件夹传输到另一个文件夹。 我遇到的问题是我在Java SFTP中遇到以下错误(使用JSch): C:\ Oracle \ Middleware \ Oracle_Home \ oracle_common \ jdk \ bin \ javaw.exe -server -classpath C:\ JDeveloper \ mywork \ Java_Hello_World.adf; C:\ JDeveloper \ mywork \ Java_Hello_World \ Client \ classes; C:\ Users \ ADMIN \ Downloads \ _jsch-0.1.53.jar -Djavax.net.ssl.trustStore = C:\ Users \ IBM_AD~1 \ AppData \ Local \ […]