服务器实现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();
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论