Java, jsch , ssh , ppk 密钥文件, 连接远程数据库 mysql
服务器基于安全考虑未暴露不必要的端口,
有些时候我们需要远程连接这些端口, 比如只有3306 仅允许本地连接, 这个时候我们可以通过ssh proxy 方式连接.
直接上代码:
package com.etoak.demo;import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;/*** ssh 代理转发端口* @author lizhenhe 2022/7/19 21:11*/
public class SSHProxy {private static final SSHProxy proxy = new SSHProxy();private Session session;/*** @return*/public static SSHProxy getInstance() {return proxy;}/*** @param host SSH主机* @param port SSH端口* @param userId SSH用户* @param keyFilePath 私钥路径* @return* @throws JSchException*/public void createSSHSession(String host, int port, String userId, String keyFilePath) throws JSchException {JSch jsch = new JSch();this.session = jsch.getSession(userId, host, port);jsch.addIdentity(keyFilePath);session.setConfig("StrictHostKeyChecking", "no");session.connect();}/*** @param localePort 本地服务端口* @param targetHost 连接的目标主机* @param targetPort 连接的目标端口* @return* @throws JSchException*/public void forward(int localePort, String targetHost, int targetPort) throws JSchException {session.setPortForwardingL(localePort, targetHost, targetPort);}/*** @param args*/public static void main(String[] args) {// ===============1. 实例化===============SSHProxy proxy = SSHProxy.getInstance();// ===============2. 创建SSH会话===============//SSH服务器String host = "x.x.x.x";//ssh连接私钥路径, 放在项目中,使用配置文件代替String keyFilePath = "/Users/lizhenhe/Downloads/jsh-ssh-demo/src/main/resources/key.ppk";//SSH服务端口int port = 22;//SSH连接用户名String userId = "root";try {proxy.createSSHSession(host, port, userId, keyFilePath);} catch (JSchException e) {e.printStackTrace();}// ===============3. 端口跳转 ===============// 程序中使用 jdbc:mysql://localhost:13306 连接, 其中13306 是通过ssh 代理过来的// 本地服务端口, 这个可以根据需求更改int localePort = 13306;// 目标服务器String targetHost = "localhost";// 目标服务端口int targetPort = 3306;try {proxy.forward(localePort, targetHost, targetPort);//fixme 上线时 修改成loggerSystem.out.println("通过ssh转发端口成功");} catch (JSchException e) {e.printStackTrace();}}}
<!-- https://mvnrepository.com/artifact/com.jcraft/jsch --><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency>
这个时候 你就可以直接通过代码或常用客户端 连接转发出来的端口 如上例中 13306 来连接数据库了,
Java, jsch , ssh , ppk 密钥文件, 连接远程数据库 mysql相关推荐
- java项目——Dom4j读取XML文件连接orecal数据库
Dom4j介绍: dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集 成了DOM,SAX和JAXP.在国内比较 ...
- MySQL命令行连接远程数据库
mysql命令用户连接远程数据库 mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 例如:mysql -h10.1.1.143 -uroot -ptest 连接带端口: mys ...
- linux mysql 10061_详解使用navicat连接远程linux mysql数据库出现10061未知故障
使用使用navicat连接远程linux mysql数据库出现10061未知故障,设置使用ssh连接后出现2013故障 本机环境:win10 navicat premium mysql数据库主机环境: ...
- 最详细Android连接远程的MySQL数据库实例
最详细Android连接远程的MySQL数据库实例 tags:MySQL 文章目录 最详细Android连接远程的MySQL数据库实例 前言 环境配置 查看MySQL:version方法 新建Andr ...
- pl/sql developer连接远程数据库
本地不安装oracle client程序,直接使用pl/sql developer连接远程数据库 考虑到机子本身资源有限,一个client会占用很多资源,尝试使用不安装客户端的方式进行远程连接. 需要 ...
- 连接远程数据库ORACLE11g,错误百出!
客户机中PLSQL DEV访问虚拟机中的ORACLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦! 安 ...
- sqlplus连接远程数据库
方式一:简易连接,不用进行网络配置,其实就是tnsname.ora文件,但只支持oracle10G以上. 命令:sqlplus 用户名/密码@ip地址[:端口]/service_name [as sy ...
- php mongodb连接数据库,PHP下 Mongodb 连接远程数据库的实例代码
WINDOWS 下装MongoDB 1.在mongodb的文件夹下创建 data.logs 文件夹 和mongo.conf 命令行命令! D:\mongodb\bin> mongod --dbp ...
- python数据分析——如何用python连接远程数据库
本文将以SQLite.MySQL,PostgreSQL为例讲解python怎样连接远程数据库并执行相关数据库操作. SQLite SQLite可能是与Python连接的最方便的数据库,因为我们不需要安 ...
最新文章
- 端到端基于图像的伪激光雷达3D目标检测
- 2020年6月18日 618感言
- 参数估计Bayesian方法的困惑点
- ng机器学习视频笔记(十四) ——推荐系统基础理论
- 内置方法-str方法定制变量输出信息
- 【图论】【最短路】【SPFA】【USACO题库】2.4.4 Bessie Come Home回家(jzoj 1274)
- 两万字详细爬虫知识储备,数据采集与清洗基础习题(一)头歌参考答案
- 2017年公众号32篇热文回看
- 软件测试核心之用例设计
- Groovy获取json和xml数据
- MSDN Visual系列:用WSSv3中的SPGridView控件来显示数据
- csdn 博客代码块显示复制按钮
- [笔记]深入解析Windows操作系统《二》系统架构
- nod32 激活码 地址 NOD 32
- 网页游戏开发语言AS3(ActiveScript3.0)
- 判断样本均值:单样本T检验,双T检验(T-T检验),配对样本T检验(P-T检验)
- 自学神经网络系列 —— 8 前馈神经网络
- 201771010112罗松《面向对象程序设计(java)》第十三周学习总结
- 新手搭建网站后视频资源在网站上是如何存储的?
- 松下A6伺服速度控制模式
热门文章
- 水彩画工具JixiPix Aquarella for Mac
- APPS BFC-11-75-03B 75欧RF变压器替Mini-Circuit TC1-1T
- linux 启动过程
- 库乐队历史版本怎么下载_库乐队下载_库乐队安卓版下载_库乐队下载安装-太平洋下载中心...
- C# Snap7 实现对西门子PLC的读写(本篇主要对系统诊断缓存区(SSL或SZL)内容进行读取)
- Storm之——使用daemontools监控Storm进程
- Nodejs一键实现微信内打开网页url自动跳转外部浏览器访问的功能
- CUDA 11.2安装血泪史
- mysql sdo geometry_c#读写SDO_GEOMETRY字段
- HTC官方RUU固件提取刷机包rom.zip以及RUU解密教程