官方地址: http://www.cleondris.ch/en/opensource-ssh2.php
简介:
Ganymed SSH-2 for Java é uma biblioteca que implementa o protocolo SSH-2 em Java puro (testado em J2SE 1.4.2 e 5.0). Ele permite conectar-se a servidores SSH a partir de programas Java. Ele suporta sessões SSH (execução remota de comandos e acesso shell), encaminhamento de porta local e remota, encaminhamento de fluxo local, encaminhamento X11, SCP e SFTP. Não há dependências de nenhum provedor JCE, pois todas as funcionalidades de criptografia estão incluídas.
程序:
复制代码代码如下:
@Teste
public void testeSsh() {
String nome do host = "192.168.0.1";
String nome de usuário = "root";
String senha = "senha";
tentar {
/* Cria uma instância de conexão */
Conexão conn = nova conexão (nome do host);
/* Agora conecte */
conexão.connect();
System.out.println("conectar ok");
/*
* Autenticar. Se você receber uma IOException dizendo algo como
* "A senha do método de autenticação não é suportada pelo servidor neste estágio."
* então verifique o FAQ.
*/
boolean isAuthenticated = conn.authenticateWithPassword(nome de usuário,senha);
if (isAuthenticated == falso)
throw new IOException("Falha na autenticação.");
System.out.println("Autenticação ok");
/* Cria uma sessão */
Sessão sessão = conn.openSession();
sess.execCommand("uname -a");
System.out.println("Aqui estão algumas informações sobre o host remoto:");
/*
* Este exemplo básico não lida com stderr, que às vezes é
* perigoso (leia o FAQ).
*/
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = novo BufferedReader(new InputStreamReader(stdout));
enquanto (verdadeiro) {
String linha = br.readLine();
if (linha == nulo)
quebrar;
System.out.println(linha);
}
/* Mostra o status de saída, se disponível (caso contrário, "nulo") */
System.out.println("ExitCode: " + sess.getExitStatus());
/* Fecha esta sessão */
sessão.close();
/* Fecha a conexão */
conn.close();
} catch (IOException e) {
e.printStackTrace(System.err);
Sistema.exit(2);
}
}
运行结果:
复制代码代码如下:
conecte ok
Autenticação ok
Aqui estão algumas informações sobre o host remoto:
Linux localhost.localdomain 2.6.22 #1 SMP Quarta, 13 de agosto 11:24:59 CST 2008 i686 i686 i386 GNU/Linux
Código de saída: 0