服務(wù)器實(shí)現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器方式(JSch)
服務(wù)器實(shí)現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器
要實(shí)現(xiàn) Java 遠(yuǎn)程訪問 Linux 服務(wù)器,首先要建立 SSH 連接。
SSH(Secure Shell)是一種強(qiáng)大的網(wǎng)絡(luò)安全技術(shù),可以在受信任的兩臺(tái)主機(jī)之間創(chuàng)建一條加密的連接,以保護(hù)數(shù)據(jù)進(jìn)行傳輸。
一般來說,SSH服務(wù)器使用22端口,只要將服務(wù)器的 IP 地址及端口填入 SSH 客戶端實(shí)現(xiàn)連接,就可以得到連接權(quán)限。
JSch是SSH2的純Java實(shí)現(xiàn) 。
通過使用 jsch 開源庫處理 SSH 連接,session 對(duì)象來發(fā)送指令并且解析返回值,以及最終關(guān)閉連接,可以實(shí)現(xiàn) Java 程序和遠(yuǎn)程服務(wù)器之間的交互。
建立 SSH 連接之后,我們可以使用 Java 語言的相關(guān)的 API 來控制遠(yuǎn)程的 Linux 服務(wù)器,
具體的步驟如下:
1.使用jsch開源庫負(fù)責(zé)SSH連接
來執(zhí)行連接服務(wù)器:
// 創(chuàng)建 Jsch 實(shí)例 JSch jsch = new JSch(); // 指定服務(wù)器IP地址 String host = “172.16.3.15”; // 設(shè)置SSH服務(wù)器端口,默認(rèn)端口為22 int port = 22; // 建立連接 Session session = jsch.getSession(user,host, port); // 有密碼設(shè)置密碼無密碼無需配置 session.setPassword("123"); // 解決用戶不能遠(yuǎn)程登錄 // session.setConfig("userauth.gssapi-with-mic", "no"); // 設(shè)置第一次登陸的時(shí)候提示,可選值:(ask | yes | no) // session.setConfig("StrictHostKeyChecking", "no");
2.使用session對(duì)象來發(fā)送指令至服務(wù)器
// 打開連接 session.connect(); // 10秒連接超時(shí) // session.connect(10 * 1000); // 執(zhí)行指令 String command = “l(fā)s -lha”; Channel channel =session.openChannel(“exec”); // 設(shè)置指令 ((ChannelExec) channel).setCommand(command); // 接收數(shù)據(jù) InputStream in = channel.getInputStream(); // 執(zhí)行 channel.connect();
3.解析返回值
// 申明緩存區(qū) byte[] tmp = new byte[1024]; // 將返回的數(shù)據(jù)放入緩存中 while(true){ while (in.available() > 0) { int i = in.read(tmp, 0, 1024); if (i } }
最后,關(guān)閉連接:
// 關(guān)閉連接 session.disconnect(); channel.disconnect();
或者執(zhí)行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();
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
注解@TableName,@TableField,pgsql的模式對(duì)應(yīng)方式
這篇文章主要介紹了注解@TableName,@TableField,pgsql的模式對(duì)應(yīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04使用jxls自定義命令設(shè)置動(dòng)態(tài)行高
這篇文章主要介紹了使用jxls自定義命令設(shè)置動(dòng)態(tài)行高,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08細(xì)數(shù)java for循環(huán)中的那些坑
這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07MyBatis實(shí)現(xiàn)多表聯(lián)查的詳細(xì)代碼
這篇文章主要介紹了MyBatis如何實(shí)現(xiàn)多表聯(lián)查,通過實(shí)例代碼給大家介紹使用映射配置文件實(shí)現(xiàn)多表聯(lián)查,使用注解的方式實(shí)現(xiàn)多表聯(lián)查,需要的朋友可以參考下2022-08-08Java幾個(gè)實(shí)例帶你進(jìn)階升華下篇
與其明天開始,不如現(xiàn)在行動(dòng),本文為你帶來幾個(gè)Java書寫的實(shí)際案例,對(duì)鞏固編程的基礎(chǔ)能力很有幫助,快來一起往下看看吧2022-03-03詳解IDEA中類加載器調(diào)用getResourceAsStream()方法需注意的問題
這篇文章主要介紹了詳解IDEA中類加載器調(diào)用getResourceAsStream()方法需注意的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Spring Boot項(xiàng)目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關(guān)于Spring Boot定制PropertyEditors的知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11SpringMVC通過注解獲得參數(shù)的實(shí)例
下面小編就為大家?guī)硪黄猄pringMVC通過注解獲得參數(shù)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08