欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot如何通過(guò)SSH連接遠(yuǎn)程服務(wù)器

 更新時(shí)間:2024年07月10日 08:42:33   作者:平平常常一般牛  
這篇文章主要介紹了springboot如何通過(guò)SSH連接遠(yuǎn)程服務(wù)器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

業(yè)務(wù)場(chǎng)景

處于對(duì)安全角度的考慮并且服務(wù)器不在同一個(gè)局域網(wǎng)下,服務(wù)器的訪問(wèn)地址不適合直接放到公網(wǎng)上,需要本地服務(wù)器通過(guò)ssh信道轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器中。

springboot單體項(xiàng)目連接服務(wù)器。

解決方法

引入依賴

		<dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.53</version>
        </dependency>

賬號(hào)密碼驗(yàn)證連接SSH

  • SSH連接工具類
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.util.Properties;

/**
 * SSH連接遠(yuǎn)程服務(wù)器轉(zhuǎn)發(fā)工具類
 */
public class SshConnectionTool {

    //ssh連接的用戶名
    private final static String SSH_USER = "test";
    //ssh連接的密碼
    private final static String SSH_PASSWORD = "123456";
    //ssh遠(yuǎn)程連接的ip地址
    private final static String SSH_REMOTE_SERVER = "12.34.56.78";
    //ssh連接的端口號(hào)
    private final static int SSH_REMOTE_PORT = 2721;
    //遠(yuǎn)程mysql連接的IP地址
    private final static String MYSQL_REMOTE_SERVER = "124.543.789.111";
    //本地?cái)?shù)據(jù)庫(kù)連接時(shí)用的端口號(hào),和yml配置的端口一致
    private final static int LOCAl_PORT = 3309;
    //遠(yuǎn)程數(shù)據(jù)庫(kù)端口用的端口號(hào)
    private final static int REMOTE_PORT = 31494;

    private Session sesion; //ssh 會(huì)話

    public void closeSSH ()
    {
        sesion.disconnect();
    }

    public SshConnectionTool () throws Throwable
    {

        JSch jsch = new JSch();

        sesion = jsch.getSession(SSH_USER, SSH_REMOTE_SERVER, SSH_REMOTE_PORT);

        sesion.setPassword(SSH_PASSWORD);

        //設(shè)置連接過(guò)程不校驗(yàn)known_hosts文件中的信息
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        sesion.setConfig(config);

        sesion.connect(); //ssh 建立連接!

        //根據(jù)安全策略,您必須通過(guò)轉(zhuǎn)發(fā)端口進(jìn)行連接
        sesion.setPortForwardingL(LOCAl_PORT, MYSQL_REMOTE_SERVER, REMOTE_PORT);
    }
}
  • SSH連接監(jiān)視器
import org.springframework.stereotype.Component;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * SSH鏈接 監(jiān)視器
 */
@Component
public class SshContextListener implements ServletContextListener {
    private SshConnectionTool conexionssh;
    public SshContextListener() {
        super();
    }
    /**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("Context initialized ... !");
        try {
            conexionssh = new SshConnectionTool();
        } catch (Throwable e) {
            e.printStackTrace(); // 連接失敗
        }
    }

    /**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent arg0) {
        System.out.println("Context destroyed ... !");
        conexionssh.closeSSH(); // 斷開(kāi)連接
    }
}
  • yml 連接池配置
url: jdbc:mysql://127.0.0.1:3309/test?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼具體代碼

    Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼具體代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼具體代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • spring boot定時(shí)任務(wù)接收郵件并且存儲(chǔ)附件的方法講解

    spring boot定時(shí)任務(wù)接收郵件并且存儲(chǔ)附件的方法講解

    今天小編就為大家分享一篇關(guān)于spring boot定時(shí)任務(wù)接收郵件并且存儲(chǔ)附件的方法講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 詳解spring boot starter redis配置文件

    詳解spring boot starter redis配置文件

    spring-boot-starter-Redis主要是通過(guò)配置RedisConnectionFactory中的相關(guān)參數(shù)去實(shí)現(xiàn)連接redis service。下面通過(guò)本文給大家介紹在spring boot的配置文件中redis的基本配置,需要的的朋友參考下
    2017-07-07
  • 詳解領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)之事件驅(qū)動(dòng)與CQRS

    詳解領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)之事件驅(qū)動(dòng)與CQRS

    這篇文章分析了如何應(yīng)用事件來(lái)分離軟件核心復(fù)雜度。探究CQRS為什么廣泛應(yīng)用于DDD項(xiàng)目中,以及如何落地實(shí)現(xiàn)CQRS框架。當(dāng)然我們也要警惕一些失敗的教訓(xùn),利弊分析以后再去抉擇正確的應(yīng)對(duì)之道
    2021-06-06
  • Javamelody監(jiān)控不到sql的問(wèn)題(親測(cè)有效)??

    Javamelody監(jiān)控不到sql的問(wèn)題(親測(cè)有效)??

    JavaMelody是用來(lái)在QA和實(shí)際運(yùn)行生產(chǎn)環(huán)境中監(jiān)控Java或Java?EE應(yīng)用程序服務(wù)器的一個(gè)開(kāi)源框架,這篇文章主要介紹了Javamelody監(jiān)控不到sql(親測(cè)有效)??,需要的朋友可以參考下
    2022-10-10
  • SpringBoot利用jackson格式化時(shí)間的三種方法

    SpringBoot利用jackson格式化時(shí)間的三種方法

    日常開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用json進(jìn)行數(shù)據(jù)的傳輸,這就涉及到了對(duì)象和json的相互轉(zhuǎn)化,常用的解決方案有:Jackson(推薦)、谷歌的Gson、阿里的Fastjson,這篇文章主要給大家介紹了關(guān)于SpringBoot如何利用jackson格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Maven使用集成測(cè)試的示例代碼

    Maven使用集成測(cè)試的示例代碼

    本文介紹了在Maven項(xiàng)目中使用maven-failsafe-plugin插件進(jìn)行集成測(cè)試,步驟包括添加測(cè)試依賴、編寫(xiě)集成測(cè)試類、配置插件、運(yùn)行測(cè)試以及查看和分析測(cè)試結(jié)果,感興趣的可以了解一下
    2024-11-11
  • Mybatis基礎(chǔ)概念與高級(jí)應(yīng)用小結(jié)

    Mybatis基礎(chǔ)概念與高級(jí)應(yīng)用小結(jié)

    這篇文章主要介紹了Mybatis基礎(chǔ)回顧與高級(jí)應(yīng)用,本文內(nèi)容有點(diǎn)小長(zhǎng),希望大家耐心閱讀,此文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Java面向?qū)ο笾鄳B(tài)

    Java面向?qū)ο笾鄳B(tài)

    這篇文章主要介紹了Java面向?qū)ο笾鄳B(tài),文章以什么是多態(tài)、多態(tài)的實(shí)現(xiàn)條件、多態(tài)的訪問(wèn)特點(diǎn)、多態(tài)的優(yōu)點(diǎn)和缺點(diǎn)的相關(guān)資料展開(kāi)文章內(nèi)容,需要的小伙伴可以參考一下
    2021-10-10
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(21)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(21)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07

最新評(píng)論