资源简介

Java语言+绚丽的界面+仿ssh实现调用Linux的Terminal,实现远程连接linux进行命令行的操作!

资源截图

代码片段和文件信息

package com.smu.yyh.conn;

import java.io.File;
import java.io.IOException;

import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.KnownHosts;
import ch.ethz.ssh2.Session;

import com.smu.yyh.dialog.EnterSomethingDialog;
import com.smu.yyh.dialog.TerminalDialog;

/**
 * 使用单独的线程建立ssh连接
 * 
 * @author yyh
 * 
 */
public class ConnectionThread extends Thread {
private static final String idDSAPath = “~/.ssh/id_dsa“;
private static final String idRSAPath = “~/.ssh/id_rsa“;
private String hostname;
private String username;
private Jframe loginframe;
private KnownHosts database;

public ConnectionThread(String hostname String username KnownHosts database Jframe loginframe) {
this.hostname = hostname;
this.username = username;
this.database = database;
this.loginframe = loginframe;
}

public void run() {
Connection conn = new Connection(hostname);

try { // 验证连接
String[] hostkeyAlgos = database.getPreferredServerHostkeyAlgorithmOrder(hostname);
if (hostkeyAlgos != null)
conn.setServerHostKeyAlgorithms(hostkeyAlgos);
conn.connect(new com.smu.yyh.utils.AdvancedVerifier(loginframe database));

boolean enableKeyboardInteractive = true;
boolean enableDSA = true;
boolean enableRSA = true;
String lastError = null;
while (true) { // 认证阶段
if ((enableDSA || enableRSA) && conn.isAuthMethodAvailable(username “publickey“)) {
if (enableDSA) {
File key = new File(idDSAPath);
if (key.exists()) {
EnterSomethingDialog esd = new EnterSomethingDialog(loginframe “DSA Authentication“ new String[] { lastError
“输入DSA密钥:“ } true);
esd.setVisible(true);
boolean res = conn.authenticateWithPublicKey(username key esd.answer);
if (res == true)
break;
lastError = “DSA验证失败“;
}
enableDSA = false;
}
if (enableRSA) {
File key = new File(idRSAPath);
if (key.exists()) {
EnterSomethingDialog esd = new EnterSomethingDialog(loginframe “RSA Authentication“ new String[] { lastError
“输入RSA密钥:“ } true);
esd.setVisible(true);
boolean res = conn.authenticateWithPublicKey(username key esd.answer);
if (res == true)
break;
lastError = “RSA 验证失败“;
}
enableRSA = false;
}
continue;
}

if (enableKeyboardInteractive && conn.isAuthMethodAvailable(username “keyboard-interactive“)) {
com.smu.yyh.utils.InteractiveLogic il = new com.smu.yyh.utils.InteractiveLogic(lastError loginframe);
boolean res = conn.authenticateWithKeyboardInteractive(username il);
if (res == true)
break;
if (il.getPromptCount() == 0) {
lastError = “键盘无法键入“;
enableKeyboardInteractive = false;
} else {
lastError = “身份验证失败“;
}
continue;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        425  2014-08-02 12:58  SSH\.classpath

     文件        379  2014-08-02 13:59  SSH\.project

     文件        598  2014-07-30 09:58  SSH\.settings\org.eclipse.jdt.core.prefs

     文件        757  2014-08-02 14:09  SSH\bin\com\smu\yyh\conn\ConnectionThread$1.class

     文件       5047  2014-08-02 14:09  SSH\bin\com\smu\yyh\conn\ConnectionThread.class

     文件        905  2014-08-02 13:59  SSH\bin\com\smu\yyh\dialog\EnterSomethingDialog$1.class

     文件       2691  2014-08-02 13:59  SSH\bin\com\smu\yyh\dialog\EnterSomethingDialog.class

     文件        817  2014-08-02 15:34  SSH\bin\com\smu\yyh\dialog\TerminalDialog$1.class

     文件       1090  2014-08-02 15:34  SSH\bin\com\smu\yyh\dialog\TerminalDialog$2.class

     文件       2443  2014-08-02 15:34  SSH\bin\com\smu\yyh\dialog\TerminalDialog$RemoteConsumer.class

     文件       3270  2014-08-02 15:34  SSH\bin\com\smu\yyh\dialog\TerminalDialog.class

     文件        731  2014-08-02 13:59  SSH\bin\com\smu\yyh\ssh\SecureShell$1.class

     文件        625  2014-08-02 13:59  SSH\bin\com\smu\yyh\ssh\SecureShell$2.class

     文件       5896  2014-08-02 13:59  SSH\bin\com\smu\yyh\ssh\SecureShell.class

     文件       2753  2014-08-02 13:59  SSH\bin\com\smu\yyh\utils\AdvancedVerifier.class

     文件       1740  2014-08-02 13:59  SSH\bin\com\smu\yyh\utils\InteractiveLogic.class

     文件     244831  2014-08-02 10:48  SSH\lib\ganymed-ssh2-build210.jar

     文件    1743059  2014-08-02 12:58  SSH\lib\substance.jar

     文件       4295  2014-08-02 14:09  SSH\src\com\smu\yyh\conn\ConnectionThread.java

     文件       1910  2014-08-02 13:56  SSH\src\com\smu\yyh\dialog\EnterSomethingDialog.java

     文件       3993  2014-08-02 15:34  SSH\src\com\smu\yyh\dialog\TerminalDialog.java

     文件       4710  2014-08-02 13:57  SSH\src\com\smu\yyh\ssh\SecureShell.java

     文件       2318  2014-08-02 13:49  SSH\src\com\smu\yyh\utils\AdvancedVerifier.java

     文件       1244  2014-08-02 12:52  SSH\src\com\smu\yyh\utils\InteractiveLogic.java

     目录          0  2014-08-03 08:49  SSH\bin\com\smu\yyh\conn

     目录          0  2014-08-03 08:49  SSH\bin\com\smu\yyh\dialog

     目录          0  2014-08-03 08:49  SSH\bin\com\smu\yyh\ssh

     目录          0  2014-08-03 08:49  SSH\bin\com\smu\yyh\utils

     目录          0  2014-08-03 08:49  SSH\src\com\smu\yyh\conn

     目录          0  2014-08-03 08:49  SSH\src\com\smu\yyh\dialog

............此处省略16个文件信息

评论

共有 条评论