[From] http://xpenxpen.iteye.com/blog/2061869
 
上一篇文章我们成功搭建了sshd服务器,并通过3种方式登陆上了ssh。这一篇我们将用开源jar包jsch来登陆ssh服务器。 
1.去官网下载最新的jar包 
jsch-0.1.51.jar 
2.运行官方例子 
Shell.java 
演示了如何连接到sshd服务器 
Exec.java 
演示了登陆上去并执行一条命令 
注意以上2个例子让你输入密码同样也是输入cyg_server用户的密码 
运行成功后可以看下它的代码。 
3.再做一个SFTP试验 
- import java.io.*;  
- import java.util.*;  
- import com.jcraft.jsch.*;  
-   
- public class Test1 {  
-       
-     public static void main(String[] args) throws Exception {  
-         Test1.sshSftp("127.0.0.1", "Administrator", "cyg_server", 22);  
-         Test1.sshSftp2("127.0.0.1", "Administrator", 22, "C:/Users/Administrator/rsa_my", "");  
-     }  
-       
-     
-     public static void sshSftp(String ip, String user, String psw   
-             ,int port) throws Exception{  
-         System.out.println("开始用户名密码方式登陆");  
-         Session session = null;  
-           
-         JSch jsch = new JSch();  
-           
-         if(port <=0){  
-             
-             session = jsch.getSession(user, ip);  
-         }else{  
-             
-             session = jsch.getSession(user, ip ,port);  
-         }  
-   
-         
-         if (session == null) {  
-             throw new Exception("session is null");  
-         }  
-           
-         
-         session.setPassword(psw);
-         
-         session.setConfig("StrictHostKeyChecking", "no");  
-         
-         session.connect(30000);  
-           
-         sftp(session, "aa.log");  
-         System.out.println("sftp成功");  
-     }  
-       
-     
-     public static void sshSftp2(String ip, String user  
-             ,int port ,String privateKey ,String passphrase) throws Exception{  
-         System.out.println("开始秘钥方式登陆");  
-         Session session = null;  
-           
-         JSch jsch = new JSch();  
-           
-         
-         
-         if (privateKey != null && !"".equals(privateKey)) {  
-                if (passphrase != null && "".equals(passphrase)) {  
-                 
-                    jsch.addIdentity(privateKey, passphrase);  
-                } else {  
-                 
-                    jsch.addIdentity(privateKey);  
-                }  
-         }  
-           
-           
-         if(port <=0){  
-             
-             session = jsch.getSession(user, ip);  
-         }else{  
-             
-             session = jsch.getSession(user, ip ,port);  
-         }  
-   
-         
-         if (session == null) {  
-             throw new Exception("session is null");  
-         }  
-           
-         
-         session.setConfig("StrictHostKeyChecking", "no");  
-         
-         session.connect(30000);  
-           
-         sftp(session, "bb.log");  
-         System.out.println("sftp成功");  
-     }  
-       
-     private static void sftp(Session session, String uploadFileName) throws Exception {  
-         Channel channel = null;  
-         try {  
-             
-             channel = (Channel) session.openChannel("sftp");  
-             channel.connect(1000);  
-             ChannelSftp sftp = (ChannelSftp) channel;  
-               
-               
-             
-             sftp.cd("testsftp");  
-               
-             
-             Vector v = sftp.ls("*.txt");  
-             for(int i=0;i<v.size();i++){  
-                 System.out.println(v.get(i));  
-             }  
-               
-             
-             OutputStream outstream = sftp.put(uploadFileName);  
-             InputStream instream = new FileInputStream(new File("C:/ftptest/aa.txt"));  
-               
-             byte b[] = new byte[1024];  
-             int n;  
-             while ((n = instream.read(b)) != -1) {  
-                 outstream.write(b, 0, n);  
-             }  
-               
-             outstream.flush();  
-             outstream.close();  
-             instream.close();  
-         } catch (Exception e) {  
-             e.printStackTrace();  
-         } finally {  
-             session.disconnect();  
-             channel.disconnect();  
-         }  
-     }  
- }  
 
代码是引用了http://my.oschina.net/hetiangui/blog/137357 
首先这句sftp.ls("*.txt")是列出指定文件夹下所有txt文件, 
然后sftp.put("3.txt")是上传一个文件到SFTP服务器上。 
注意main函数里有2种登陆方式, 
第一种是通过用户名Administrator,密码cyg_server的方式登陆。 
第二种是通过秘钥方式登陆,我们的私钥目录是"C:/Users/Administrator/rsa_my",而passphrase则为空。
Jsch初步
原文:http://www.cnblogs.com/pekkle/p/6680524.html