使用JSch通过Java通过ssh向远程服务器发送命令

新手上路,请多包涵

我正在尝试设置一个类,以便我可以通过 ssh 连接到远程服务器(我有 IP、用户名和密码),然后发送类似 echo "test" 的命令,然后接收回输出(例如, “测试”)。我正在使用 JSch 来执行此操作,但我不知道该怎么做。

 import com.jcraft.jsch.*;

public class ConnectSSH {

public int execute (String command) {

    JSch jsch   = new JSch();
    String ip   = "00.00.00.00";
    String user = "root";
    String pass = "password";
    int port    = 22;

    Session session = jsch.getSession(user, ip, port);
    session.setPassword(pass);
    session.connect();

    ...

连接后卡住了

原文由 snario 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 586
1 个回答

尝试这个:

 JSch jsch=new JSch();
Session session=jsch.getSession(remoteHostUserName, RemoteHostName, 22);
session.setPassword(remoteHostpassword);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();

ChannelExec channel=(ChannelExec) session.openChannel("exec");
BufferedReader in=new BufferedReader(new InputStreamReader(channel.getInputStream()));
channel.setCommand("pwd;");
channel.connect();

String msg=null;
while((msg=in.readLine())!=null){
  System.out.println(msg);
}

channel.disconnect();
session.disconnect();

原文由 Shamnad 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题