Trang chủHướng dẫnDùng JSch để thực thi lệnh shell trên server Unix qua SSH
Java

Dùng JSch để thực thi lệnh shell trên server Unix qua SSH

CyStack blog < 1 phút để đọc
CyStack blog22/05/2025
Reading Time: < 1 minute

Hôm nay chúng ta sẽ cùng tìm hiểu một ví dụ về JSch. Chúng ta có thể sử dụng thư viện này để tạo kết nối SSH trong Java. Cụ thể, dưới đây là về một chương trình dùng JSch để kết nối tới máy chủ có hỗ trợ SSH và thực thi các lệnh shell.

Ví dụ dùng JSch

Bạn có thể tải về file JAR của JSch từ trang web chính thức của nó. Bạn cũng có thể lấy chúng bằng cách khai báo dependency Maven như dưới đây.

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.53</version>
</dependency>

Dưới đây là một ví dụ JSch đơn giản để chạy lệnh “ls -ltr” trên máy chủ.

import java.io.InputStream;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;


public class JSchExampleSSHConnection {

	/**
	 * JSch Example Tutorial
	 * Java SSH Connection Program
	 */
	public static void main(String[] args) {
	    String host="ssh.journaldev.com";
	    String user="sshuser";
	    String password="sshpwd";
	    String command1="ls -ltr";
	    try{
	    	
	    	java.util.Properties config = new java.util.Properties(); 
	    	config.put("StrictHostKeyChecking", "no");
	    	JSch jsch = new JSch();
	    	Session session=jsch.getSession(user, host, 22);
	    	session.setPassword(password);
	    	session.setConfig(config);
	    	session.connect();
	    	System.out.println("Connected");
	    	
	    	Channel channel=session.openChannel("exec");
	        ((ChannelExec)channel).setCommand(command1);
	        channel.setInputStream(null);
	        ((ChannelExec)channel).setErrStream(System.err);
	        
	        InputStream in=channel.getInputStream();
	        channel.connect();
	        byte[] tmp=new byte[1024];
	        while(true){
	          while(in.available()>0){
	            int i=in.read(tmp, 0, 1024);
	            if(i<0)break;
	            System.out.print(new String(tmp, 0, i));
	          }
	          if(channel.isClosed()){
	            System.out.println("exit-status: "+channel.getExitStatus());
	            break;
	          }
	          try{Thread.sleep(1000);}catch(Exception ee){}
	        }
	        channel.disconnect();
	        session.disconnect();
	        System.out.println("DONE");
	    }catch(Exception e){
	    	e.printStackTrace();
	    }

	}

}

Đây là một ví dụ khá đơn giản về cách dùng JSch để tạo kết nối SSH trong Java. Hãy để lại bình luận nếu gặp bất kỳ vấn đề nào chạy thử ví dụ ở trên.

Bạn có thể tải file JSch jar từ trang web chính thức của nó. Nếu gặp bất cứ vấn đề gì khi làm theo ví dụ trên, đừng ngần ngại mà để lại comment bên dưới nhé.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.