当前位置: 代码网 > it编程>编程语言>Java > 服务器实现Java远程访问Linux服务器方式(JSch)

服务器实现Java远程访问Linux服务器方式(JSch)

2024年12月01日 Java 我要评论
服务器实现java远程访问linux服务器要实现 java 远程访问 linux 服务器,首先要建立 ssh 连接。ssh(secure shell)是一种强大的网络安全技术,可以在受信任的两台主机之

服务器实现java远程访问linux服务器

要实现 java 远程访问 linux 服务器,首先要建立 ssh 连接。

ssh(secure shell)是一种强大的网络安全技术,可以在受信任的两台主机之间创建一条加密的连接,以保护数据进行传输。

一般来说,ssh服务器使用22端口,只要将服务器的 ip 地址及端口填入 ssh 客户端实现连接,就可以得到连接权限。

jsch是ssh2的纯java实现 。

通过使用 jsch 开源库处理 ssh 连接,session 对象来发送指令并且解析返回值,以及最终关闭连接,可以实现 java 程序和远程服务器之间的交互。

建立 ssh 连接之后,我们可以使用 java 语言的相关的 api 来控制远程的 linux 服务器,

具体的步骤如下:

1.使用jsch开源库负责ssh连接

来执行连接服务器:

// 创建 jsch 实例
jsch jsch = new jsch();

// 指定服务器ip地址
string host = “172.16.3.15”;

// 设置ssh服务器端口,默认端口为22
int port = 22;

// 建立连接
session session = jsch.getsession(user,host, port);

// 有密码设置密码无密码无需配置
session.setpassword("123");

// 解决用户不能远程登录
// session.setconfig("userauth.gssapi-with-mic", "no");
// 设置第一次登陆的时候提示,可选值:(ask | yes | no) 
// session.setconfig("stricthostkeychecking", "no");

2.使用session对象来发送指令至服务器

// 打开连接
session.connect();

// 10秒连接超时
// session.connect(10 * 1000);

// 执行指令
string command = “ls -lha”;
channel channel =session.openchannel(“exec”);

// 设置指令
((channelexec) channel).setcommand(command);

// 接收数据
inputstream in = channel.getinputstream();

// 执行
channel.connect();

3.解析返回值

// 申明缓存区
byte[] tmp = new byte[1024];

// 将返回的数据放入缓存中
while(true){
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i
}
}

最后,关闭连接:

// 关闭连接
session.disconnect();
channel.disconnect();

或者执行linux命令

string shell = "cd /home/test/check_tran/output && sudo rm -rf 19321 "; 
list<string> list = session.immediateshell2(shell); 
system.out.println(list.tostring());
session.disconnect();

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com