java中远程服务器通过ssh连接mysql和redis
配置连接
maven依赖如下
<dependency><groupId>com.jcraftgroupId><artifactId>jschartifactId><version>0.1.53version>dependency>
java代码如下
package com.***.***.***;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;import java.util.Properties;public class SShConnectUtils {String user = "user";// 服务器登录名String password = "password";// 登陆密码String host = "***.**.***.***";//服务器公网IPint port = 22;// 跳板机ssh开放的接口 默认端口 22int local_port = 3307;// 这个是本地的端口,很重要!!!选取一个没有占用的port即可String remote_host = "127.0.0.1";// 要访问的mysql所在的host 服务器局域网IP(127.0.0.1也行)int remote_port = 3307;// 服务器上数据库端口号Session session = null;/*** 建立SSH连接*/public void SSHConnection() throws Exception{try {JSch jsch = new JSch();session = jsch.getSession(user, host, port);session.setPassword(password);session.setConfig("StrictHostKeyChecking", "no");// 日志打印自己脑补session.connect();session.setPortForwardingL(local_port, remote_host, remote_port);} catch (Exception e) {// do something}}/*** 断开SSH连接*/public void closeSSH () throws Exception{this.session.disconnect();}}
监听连接
package com.***.***.***;
import org.springframework.stereotype.Component;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
@Component
public class ConnectListener implements ServletContextListener {private SShConnectUtils conexionssh;public ConnectListener() {super();}/*** @see ServletContextListener#contextInitialized(ServletContextEvent)*/@Overridepublic void contextInitialized(ServletContextEvent arg0) {// 建立连接System.out.println("Context initialized ... !\n\n\n");try {conexionssh = new SShConnectUtils();conexionssh.SSHConnection();System.out.println("\n\n\n成功建立SSH连接!\n\n\n");} catch (Throwable e) {System.out.println("\n\n\nSSH连接失败!\n\n\n");e.printStackTrace(); // error connecting SSH server}}/*** @see ServletContextListener#contextDestroyed(ServletContextEvent)*/@Overridepublic void contextDestroyed(ServletContextEvent arg0) {// 断开连接System.out.println("Context destroyed ... !\n\n\n");try {conexionssh.closeSSH(); // disconnectSystem.out.println("\n\n\n成功断开SSH连接!\n\n\n");} catch (Exception e) {e.printStackTrace();System.out.println("\n\n\n断开SSH连接出错!\n\n\n");}}}
yml配置
spring:datasource:#3307为服务器mysql端口url: jdbc:mysql://localhost:3307/database_name?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&autoReconnect=true#服务器mysql用户名密码username: userpassword: password
如果需要连接redis,则添加一行代码配置redis连接参数
remote_port默认为6379,remote_host默认127.0.0.1,local_port选择本地未被占用的端口
session.setPortForwardingL(local_port, remote_host, remote_port);
之后配置yml
redis:#连接池jedis:pool:#最大连接个数max-active: 10#等待时间max-wait: 6000ms#最大空闲max-idle: 8#初始化最小min-idle: 5#操作第几个库database: 1#redis路径host: 127.0.0.1password: passwordport: 6379
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
