服務(wù)器實現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器方式(JSch)
服務(wù)器實現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器
要實現(xiàn) Java 遠(yuǎn)程訪問 Linux 服務(wù)器,首先要建立 SSH 連接。
SSH(Secure Shell)是一種強(qiáng)大的網(wǎng)絡(luò)安全技術(shù),可以在受信任的兩臺主機(jī)之間創(chuàng)建一條加密的連接,以保護(hù)數(shù)據(jù)進(jìn)行傳輸。
一般來說,SSH服務(wù)器使用22端口,只要將服務(wù)器的 IP 地址及端口填入 SSH 客戶端實現(xiàn)連接,就可以得到連接權(quán)限。
JSch是SSH2的純Java實現(xiàn) 。
通過使用 jsch 開源庫處理 SSH 連接,session 對象來發(fā)送指令并且解析返回值,以及最終關(guān)閉連接,可以實現(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 實例 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è)置第一次登陸的時候提示,可選值:(ask | yes | no) // session.setConfig("StrictHostKeyChecking", "no");
2.使用session對象來發(fā)送指令至服務(wù)器
// 打開連接 session.connect(); // 10秒連接超時 // 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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
注解@TableName,@TableField,pgsql的模式對應(yīng)方式
這篇文章主要介紹了注解@TableName,@TableField,pgsql的模式對應(yīng)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04細(xì)數(shù)java for循環(huán)中的那些坑
這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07MyBatis實現(xiàn)多表聯(lián)查的詳細(xì)代碼
這篇文章主要介紹了MyBatis如何實現(xiàn)多表聯(lián)查,通過實例代碼給大家介紹使用映射配置文件實現(xiàn)多表聯(lián)查,使用注解的方式實現(xiàn)多表聯(lián)查,需要的朋友可以參考下2022-08-08詳解IDEA中類加載器調(diào)用getResourceAsStream()方法需注意的問題
這篇文章主要介紹了詳解IDEA中類加載器調(diào)用getResourceAsStream()方法需注意的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Spring Boot項目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關(guān)于Spring Boot定制PropertyEditors的知識點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11