返回顶部
首页 > 资讯 > 数据库 >Java SSH 秘钥连接mysql数据库的方法
  • 835
分享到

Java SSH 秘钥连接mysql数据库的方法

2024-04-02 19:04:59 835人浏览 安东尼
摘要

当目标数据库不能直连的,需要一个服务器作为中间跳板的时候,我们需要通过ssh通道连接数据库。 ps:使用ssh连接,相当于本地开了个端口去连接远程的服务,就是ssh通道,本地起的项目

当目标数据库不能直连的,需要一个服务器作为中间跳板的时候,我们需要通过ssh通道连接数据库

ps:使用ssh连接,相当于本地开了个端口去连接远程的服务,就是ssh通道,本地起的项目监听本地的端口,就可以使用这个通道进行数据传输。

1、引入依赖


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

2、代码编写


#ssh连接是否开启
ssh.forward.enabled=true
#SSH连接跳板机地址 必填
ssh.forward.host=
#SSH连接端口  必填  固定
ssh.forward.port=22
#SSH连接用户名  必填  
ssh.forward.username=
#SSH连接密码 
ssh.forward.passWord=
#本地起的  必填  固定
ssh.forward.from_host=localhost
#本地开启的端口  必填 
ssh.forward.from_port=3307
#需要监听的远程服务的ip  必填
ssh.forward.to_host=
#需要监听的远程端口  必填
ssh.forward.to_port=3306
#SSH连接秘钥地址,也可以使用rsa.ppk文件
ssh.identity=C:\\Users\\69425\\.ssh\\id_rsa

2.1、配置 application.ssh.properties文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2、配置 SshConfiguration代码


import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.WEB.servlet.ServletContextInitializer;
import org.springframework.stereotype.Component;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.Properties;

@Slf4j
@Component
public class SshConfiguration implements ServletContextInitializer {

    public SshConfiguration() {
        try {
            Properties p = new Properties();
            p.load(getClass().getResourceAsStream("/application.ssh.properties"));
            //如果配置文件包含ssh.forward.enabled属性,则使用ssh转发
            if (p.getProperty("ssh.forward.enabled") != null) {
                log.info("ssh forward is opend.");
                log.info("ssh init ……");
                JSch jSch = new JSch();
                //需要使用秘钥时添加
                jSch.addIdentity(p.getProperty("ssh.identity"));
                Session session = jSch.getSession(p.getProperty("ssh.forward.username"), p.getProperty("ssh.forward.host"), Integer.parseInt(p.getProperty("ssh.forward.port")));
                session.setConfig("StrictHosTKEyChecking", "no");
                session.setPassword(p.getProperty("ssh.forward.password"));
                session.connect();
                session.setPortForwardingL(p.getProperty("ssh.forward.from_host"), Integer.parseInt(p.getProperty("ssh.forward.from_port")), p.getProperty("ssh.forward.to_host"), Integer.parseInt(p.getProperty("ssh.forward.to_port")));
            } else {
                log.info("ssh forward is closed.");
            }
        } catch (IOException e) {
            log.error("ssh IOException failed.", e);
        } catch (JSchException e) {
            log.error("ssh JSchException failed.", e);
        } catch (Exception e) {
            log.error("ssh settings is failed. skip!", e);
        }
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        log.info("已使用ssh连接");
    }
}

2.3、application.yum


spring:
  datasource:
#  localhost:3307 这里是ssh.forward.from_host:ssh.forward.from_port
    url: jdbc:Mysql://localhost:3307/mysql?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
#  mysql数据库连接用户名
    username: 
#  mysql数据库连接密码
    password: 
    driver-class-name: com.mysql.cj.jdbc.Driver
#   使用了druid去配置及监控连接池和本文无关,可加可不加
    druid:
      initial-size: 2
      min-idle: 1
      max-active: 10
      max-wait: 60000
      time-between-eviction-runs-millis: 60000
      min-evictable-idle-time-millis: 300000
      validation-query: select 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true

3、启动项目

在这里插入图片描述

当看到这里**“已使用ssh连接”**就可以了是连接成功了。

4、出现异常报错

com.jcraft.jsch.JSchException: invalid privatekey: [B@53a7a60c

这是秘钥问题,这个异常只在使用秘钥时候才会有。是秘钥解析失败,并不是使用秘钥连接失败。如果出现这个异常可以到这篇文章中查看:详解Java使用Jsch与sftp服务器实现ssh免密登录。

这个依赖已经很久没更新了。但是目前本人未发现更好的ssh连接jar包 ↩︎

到此这篇关于Java SSH 秘钥连接mysql数据库的方法的文章就介绍到这了,更多相关Java ssh连接mysql数据库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Java SSH 秘钥连接mysql数据库的方法

本文链接: https://lsjlt.com/news/129330.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java SSH 秘钥连接mysql数据库的方法
    当目标数据库不能直连的,需要一个服务器作为中间跳板的时候,我们需要通过SSH通道连接数据库。 ps:使用ssh连接,相当于本地开了个端口去连接远程的服务,就是ssh通道,本地起的项目...
    99+
    2024-04-02
  • Java中SSH秘钥连接mysql数据库的方法
    这篇文章主要介绍“Java中SSH秘钥连接mysql数据库的方法”,在日常操作中,相信很多人在Java中SSH秘钥连接mysql数据库的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中SSH秘钥连...
    99+
    2023-06-20
  • mysql连接数据库的方法
    小编给大家分享一下mysql连接数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!连接方法:1、打开DOS窗口,进入目录...
    99+
    2024-04-02
  • java连接Access数据库的方法
    java连接Access数据库的方法,分享给大家步骤:现在我们一般使用的编译环境是java SE 1.8,不支持odbc的连接方式,所以可以用jdbc的连接方式,还要在网上下载一个jdbc的驱动包。(这里用了Access_JDBC30.ja...
    99+
    2023-05-31
    java access 连接
  • C#连接Mysql数据库的方法
    C#连接Mysql数据库的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!本文讲的是C#连接Mysql数据库,下文附有详...
    99+
    2024-04-02
  • Nacicat连接MySQL数据库的方法
    Nacicat连接MySQL数据库的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!1、安装好MySQL和Navicat...
    99+
    2024-04-02
  • vc 连接mysql数据库的方法
    这篇文章给大家分享的是有关vc 连接mysql数据库的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。vc连接mysql数据库的方法:首先打开VC6;然后在中间列表框中添加本地...
    99+
    2024-04-02
  • .net连接mysql数据库的方法
    小编给大家分享一下.net连接mysql数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!net连接mysql数据库的方...
    99+
    2024-04-02
  • Android连接MySQL数据库的方法
    由于之前那篇文章是在大学期间好多东西都不太懂的时候写的,放到现在再来看总感觉到处都是问题(或者说已经看不懂啦)。但是看到每天上涨的那点阅读量,想了想还是把这个再用相对正常的方式再重写一遍吧。 为了省事本项目的服务端采用SpringBoot ...
    99+
    2023-10-07
    mysql 数据库 android
  • php7连接mysql数据库的方法
    这篇文章主要为大家展示了php7连接mysql数据库的方法,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“php7连接mysql数据库的方法”这篇文章吧。php有什么用php是一个嵌套的缩写名称,指...
    99+
    2023-06-06
  • Java连接mysql数据库
    文章目录 一、Java连接mysql数据库1.1 流程1.2 一个测试连接的java程序 二、优化:创建一个工具类2.1 存在的问题2.2 创建配置文件和工具类2.3 测试使用工具类进行CRUD操作 三、SQL注入问题3.1...
    99+
    2023-08-16
    数据库 mysql java jdbc sql注入
  • Java连接各种数据库的方法
    本篇内容介绍了“Java连接各种数据库的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JDBC里统一的使用方法:Class.for(jd...
    99+
    2023-06-17
  • ASP连接MySQL数据库的方法(转)
    ASP连接MySQL数据库的方法(转)[@more@]<% '测试读取MySql数据库的内容strconnection="driver={mysql odbc 3.51 driver};database=w...
    99+
    2024-04-02
  • mysql登录数据库连接的方法
    这篇文章主要介绍了mysql登录数据库连接的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql登录数据库连接的方法:首先打开Workb...
    99+
    2024-04-02
  • 连接池的奥秘:解锁数据库性能的黄金钥匙
    数据库是现代应用程序的支柱,它的性能直接影响整体系统的响应时间和用户满意度。连接池是一种关键技术,它可以显着提高数据库访问的效率,从而提升应用程序的性能。 连接池的工作原理 连接池本质上是一个容器,它预先生成并存储一定数量的数据库连接。当...
    99+
    2024-04-02
  • ubuntu环境下使Java连接MySQL数据库的方法
    小编给大家分享一下ubuntu环境下使Java连接MySQL数据库的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!对于jar包,我们需要将它配置到开发工具中去。如图所示,第一步,我们先在项...
    99+
    2024-04-02
  • Windows平台使用Navicat for MySQL通过SSH密钥认证连接远程MySQL数据库
    使用场景:1、MySQL数据库的管理员账号只允许本地登录2、应用程序连接账号只允许程序部署服务器所属IP地址连接实现方法:客户端工具通过无密码SSH密钥对连接到MySQL数据库所在服务器,再通过数据库相应的...
    99+
    2024-04-02
  • win7上python2.7连接mysql数据库的方法
    一:安装MySQL-python驱动 pip install mysql 二:连接到MySQL服务器的test数据库 #!/usr/bin/python # -*- coding: UTF...
    99+
    2022-06-04
    数据库 方法 mysql
  • django2.2版本连接mysql数据库的方法
    一、运行项目报错信息如下: File "/home/pyvip/.virtualenvs/myblog/lib/python3.6/site-packages/django/db/backends/my...
    99+
    2024-04-02
  • IDEA连接MySQL数据库的四种方法
    首先右击此电脑点击管理,进入页面  再服务栏确保MySQL是正常运行状态 打开IDEA, 左边栏选择Maven Archetype,新建一个名为javaweb的新工程 进行如图编辑完成新建  在Main包下新建一个java包,右击jav...
    99+
    2023-09-22
    mybatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作