CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Mục lục

Trang chủBlogDùng JSch để thực thi lện...
Java

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

2 phút đọc22/05/2025
CyStack Author
Bao Tran

Web Developer

0 lượt xem
Reading Time: 2 minutes

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.

Thực thi lệnh shell trên server Unix qua SSH

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.


    com.jcraft
    jsch
    0.1.53

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é.

Về tác giả

Bao Tran
Bao TranWeb Developer

I’m passionate about web development and sharing my insights through articles, with over 8 years of experience. I hope these sharings inspire you and help build a strong web development community. @#@ Tôi đam mê phát triển web và chia sẻ những hiểu biết của mình thông qua các bài viết, với hơn 8 năm kinh nghiệm. Tôi hy vọng những chia sẻ này sẽ truyền cảm hứng cho các bạn và giúp xây dựng một cộng đồng phát triển web mạnh mẽ.

Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn

Thảo luận (0)

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

Bài viết liên quan