一、gradle地址

// https://mvnrepository.com/artifact/com.jcraft/jsch
compile group: 'com.jcraft', name: 'jsch', version: '0.1.54'

二、远程登录实例

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session; public class SSHHelper {
    /**
     * 远程 执行命令并返回结果调用过程 是同步的(执行完才会返回)
     *
     * @param host
     *            主机名
     * @param user
     *            用户名
     * @param psw
     *            密码
     * @param port
     *            端口
     * @param command
     *            命令
     * @return
     */
    public static String exec(String host, String user,String psw, int port,String command) {
        String result = "";
        Session session = null;
        ChannelExec openChannel = null;
        try {
            JSch jsch = new JSch();
            session = jsch.getSession(user, host, port);
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.setPassword(psw);
            session.connect();
            openChannel = (ChannelExec) session.openChannel("exec");
            openChannel.setCommand(command);
            int exitStatus = openChannel.getExitStatus();
            System.out.println(exitStatus);
            openChannel.connect();
            InputStream in = openChannel.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            String buf = null;
            while ((buf = reader.readLine()) != null) {
                // result+= new String(buf.getBytes("gbk"),"UTF-8")+" <br>\r\n";
                result += new String(buf.getBytes("gbk"), "UTF-8") + "\r\n";
            }
        } catch (JSchException | IOException e) {
            result += e.getMessage();
        } finally {
            if (openChannel != null && !openChannel.isClosed()) {
                openChannel.disconnect();
            }
            if (session != null && session.isConnected()) {
                session.disconnect();
            }
        }
        return result;
    }     public static void main(String args[]) {
        // String exec = exec("192.168.25.128", "root", "password", 22, "sleep 10;ls;");
        // String exec = exec("192.168.25.128", "root", "password", 22, "fs_cli -x
        // status");
        // String exec = exec("172.18.4.114", "root", "root01", 22, "fs_cli -x status");
        String exec = exec("172.18.4.114", "root", "assr", 22,
                "sshpass -p 'root01' scp /home/test.txt root@172.18.4.125:/home");
        System.out.println("reply:\n" + exec);
    }
}

三、一些涉及二次密码输入的情况

引入新的项目sshpass。

1. 下载及安装

$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
$ tar -xvf sshpass.tar.gz
$ cd sshpass-1.06
$ ./configure
# sudo make install

2. 使用示例

sshpass -p 'root123456' scp /home/test.txt root@192.168.4.125:/home

java使用ssh访问Linux的项目jscraft的更多相关文章

  1. java使用ssh连接Linux并执行命令

     方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency>         <groupId>com.jcraft</groupId ...

  2. java使用SSH连接Linux系统

    SSH连接linux系统使我们在开发项目中常用到的,现在留下来,做个记录 package com.log; import java.io.BufferedReader; import java.io. ...

  3. .Net使用SSH.NET通过SSH访问Linux主机

    使用了SSH.NET库,添加引用dll至项目,以下代码显示了点击按钮后SSH链接Linux主机执行命令并返回命令执行结果 protected void btnExcute_Click(object s ...

  4. windows10 通过ssh访问 linux

    安装openssh服务 Win10其实自带OpenSSH 没有的话,点击上面的添加找到并安装 在服务里设置对应服务开机启动 添加服务器到已知主机 ssh-keygen -R 你的服务器ip 连接Lin ...

  5. ITerm2下使用ssh访问Linux

    通常情况下,iTerm2访问远程Linux使用ssh,与Termial基本一样,方法如下: ssh <用户名>@<ip> 然后输入访问的密码即可.当然还有的时候需要指定访问端口 ...

  6. 用Putty通过SSH访问Linux服务器

    1,sudo apt-get install ssh 2,sudo service ssh restart 3,重启ssh成功后,就可以直接用Putty访问服务器.

  7. java实现ssh登录linux服务器并下发命令

    依赖jar包:jsch-0.1.55.jar   commons-io-2.5.jar import com.jcraft.jsch.ChannelExec; import com.jcraft.js ...

  8. Java ssh 访问windows/Linux

     Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...

  9. 搭建Java服务器,并且实现远程安全访问linux系统

    1.通过ssh实现安全远程访问linux系统        ssh :secure shell         加密:       1. 对称加密 (加密密钥与解密密钥相同)          des ...

随机推荐

  1. 使用baksmali及smali修改apk并打包

    使用baksmali及smali修改apk并打包 工具的下载,请自行google. 有时候使用apktool反编译apk修改Smali文件之后再进行build会出现错误,这种情况下可以换一个更高版本的 ...

  2. javascript格式化json显示

    // Example usage: http://jsfiddle.net/q2gnX/ var formatJson = function(json, options) { var reg = nu ...

  3. JSP基本的语法、3个编译指令、7个动作指令、9个内置对象

    一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...

  4. sqlite可视化工具推荐

    软件名称:SQLite Expert 下载地址:http://www.sqliteexpert.com/download.html 下载免费的Personal版本就可以了 我试用了SQLite Exp ...

  5. Succession

    Description The king in Utopia has died without an heir. Now several nobles in the country claim the ...

  6. acm2024

    /**  * C语言合法标识符  */ import java.util.*; public class acm2024 { public static void main(String[] args ...

  7. 采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集?

    采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集? 采集的时候,列表的编码是UTF-8,内容页的编码却是gb2312,这种网站怎么采集? 这种情况怎么解决呢? 哈哈哈 ...

  8. mac安装热更新插件

    查看.修改或者执行某些命令需要root用户的权限,如果不想直接切换到root用户,就可以使用sudo命令.sudo命令用于针对单个命令授予临时权限.sudo仅在需要时授予用户权限,减少了用户因为错误执 ...

  9. vue Watcher分类 computed watch

    1.Watcher构造函数源码部分代码 if (options) { this.deep = !!options.deep this.user = !!options.user this.lazy = ...

  10. 修复eclipse build-helper-maven-plugin 异常

    安装 help --> install new http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-buildhelper/0.15. ...