废话不多说开干
这里需要的maven依赖
<dependency> <groupId>sshtools</groupId> <artifactId>j2ssh-core</artifactId> <version>0.2.9</version> </dependency> <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency>这里是代码
import java.io.*; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; public class TestRemoteConnect { public static void main(String[] args) { String path = "/usr/local/20200720/20200720112820286_72.jpg";//Linux服务器中的文件路径 String hostName = "192.168.1.53";//Linux服务器的地址 int port = 22;//SSH访问22端口 String username = "root";//Linux服务器的用户名 String password = "123456";//Linux服务器的密码 //创建SSH连接 Connection connect = getConnect(hostName, username, password, port); //下载文件 downloadFile(path, connect); } /** * 创建SSH连接 * @param hostName * @param username * @param password * @param port * @return */ public static Connection getConnect(String hostName, String username, String password, int port) { Connection conn = new Connection(hostName, port); try { // 连接到主机 conn.connect(); // 使用用户名和密码校验 boolean isconn = conn.authenticateWithPassword(username, password); if (!isconn) { System.out.println("用户名称或者是密码不正确"); } else { System.out.println("服务器连接成功."); return conn; } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 下载文件 * @param path * @param conn */ public static void downloadFile(String path, Connection conn) { if (conn != null) { Session session = null; try { FileOutputStream fileOut = null; session = conn.openSession(); //设置读取文件大小 102400 session.execCommand("tail -102400 ".concat(path)); InputStream inputStream = new StreamGobbler(session.getStdout()); BufferedInputStream bis = new BufferedInputStream(inputStream); //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream("F:/20200720112820286_72.jpg"); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while(length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); } catch (Exception e) { e.printStackTrace(); } finally { // 连接的Session和Connection对象都需要关闭 if (session != null) { session.close(); } if (conn != null) { conn.close(); } } } } }