Java配置SSH连接

文章展示了如何在Java应用中使用JSch库进行SSH连接配置,包括依赖引入、SSH连接初始化和销毁。此外,还详细说明了如何设置端口转发,以便通过SSH连接到远程数据库(PostgreSQL)。配置信息如主机地址、端口、用户名、私钥路径等都在YAML文件中定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 添加依赖
<dependency>  
    <groupId>com.jcraft</groupId>  
    <artifactId>jsch</artifactId>  
    <version>0.1.54</version>
</dependency>
2 配置SSH连接
@Component  
@ConditionalOnProperty(prefix = "ssh", value = "enable", havingValue = "true")  
@Slf4j  
@RequiredArgsConstructor(onConstructor = @__(@Autowired))  
public class DataSourceContextListener implements ServletContextListener {  
    private final SSHConnection connection;  
  
    @Override  
    public void contextInitialized(ServletContextEvent sce) {  
        connection.init();  
    }  
  
    @Override  
    public void contextDestroyed(ServletContextEvent sce) {  
        connection.destroy();  
    }  
}

@Component  
@Slf4j  
@ConditionalOnProperty(prefix = "ssh", value = "enable", havingValue = "true")  
public class SSHConnection {  
    private Session session;  
    @Value("${ssh.host}")  
    private String host;  
    @Value("${ssh.port}")  
    private int port;  
    @Value("${ssh.username}")  
    private String username;  
    @Value("${ssh.private.key.path}")  
    private String privateKeyPath;  
    @Value("${ssh.remote.server}")  
    private String remoteServer;  
    @Value("${ssh.remote.port}")  
    private int remotePort;  
    @Value("${ssh.local.port}")  
    private int localPort;  
  
    public void init() {  
        try {  
            session = JschUtil.getSession(host, port, username, privateKeyPath, null);  
            Properties config = new Properties();  
            config.put("StrictHostKeyChecking", "no");  
            session.setConfig(config);  
            session.setPortForwardingL(localPort, remoteServer, remotePort);  
        } catch (Exception e) {  
            log.error("connect error.", e);  
        }  
    }  
  
    public void destroy() {  
        this.session.disconnect();  
    }  
}
3 DB配置
######## 数据库名称
afs.database=test

spring.datasource.driver-class-name=org.postgresql.Driver  
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:postgresql://localhost:${ssh.local.port}/${afs.database}?sslmode=require&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true
######## username
spring.datasource.username=username  
######## password
spring.datasource.password=password

######## 开启SSH  
ssh.enable=true  
ssh.host=10.10.10.10  
ssh.port=22  
ssh.username=root  
######## 本地public key路径
ssh.private.key.path=/test/custom.pem  
######## HOST
ssh.remote.server=192.168.50.17 
ssh.remote.port=5432  
ssh.local.port=9999
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dango丶小七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值