当前位置: 首页 > 知识库问答 >
问题:

Spring Boot,通过本地计算机上的ssh隧道使用oracle-ldap url

赵昊阳
2023-03-14

有3台计算机:
本地->一些远程服务器->oracle db服务器(通过ldap)

我想设置到oracle DB的数据源连接(在我的spring boot应用程序中)。
本地计算机和带有oracle DB的计算机之间没有直接连接。因此,我使用通过远程服务器的ssh隧道:

SSH-L 127.0.0.1:8081:some.ldap.host:389 user@remote.server.host

在application.yml文件中,我使用了进一步的URL:

spring:
  datasource:
    url: jdbc:oracle:thin:@ldap://127.0.0.1:8081//srvcnm,cn=OracleContext,dc=yy,dc=xx,dc=com 

当我的应用程序试图获得数据库连接时,我得到以下错误:

Caused by: oracle.net.nt.TimeoutInterruptHandler$IOReadTimeoutException: Socket read timed out
    at oracle.net.nt.TimeoutSocketChannel.handleInterrupt(TimeoutSocketChannel.java:254)
    at oracle.net.nt.TimeoutSocketChannel.connect(TimeoutSocketChannel.java:103)
    at oracle.net.nt.TimeoutSocketChannel.<init>(TimeoutSocketChannel.java:77)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:192)
    ... 126 common frames omitted

每当我在远程服务器上部署应用程序并在application.yml中输入“direct”url时,连接就会在没有任何超时的情况下获得,应用程序运行良好。

jdbc:oracle:thin:@ldap://some.ldap.host:389//srvcnm,cn=OracleContext,dc=yy,dc=xx,dc=com

有人知道怎么处理吗?如何从本地机器获得连接?

共有1个答案

沈飞舟
2023-03-14

我可能会做一些类似的事情,我将创建调用~/.ssh/config的文件,然后添加以下内容

Host remoteserver1
        User usermane
        Hostname ip or host name
        ForwardAgent yes
Host oracleserver
    User username
    Hostname some.ldap.host
    Port 22
   # ForwardAgent yes if you need to forward one more instance
    LocalForward 8081 some.ldap.host:389
    ProxyCommand ssh -q -W %h:%p remoteserver1

当我试图从remoteserver1连接到ssh oracleserver时,它会连接到hopper,然后将ssh连接代理到overthere上的端口22(即oracleserver上的ssh)。

现在要通过ssh进行连接,请执行ssh oracleserver,因为它将通过RemoteServer1在您的机器和oracleserver之间建立ssh隧道。以及端口转发。

 类似资料:
  • 我正在我的机器上运行Ansible。我的机器没有ssh访问远程机器的权限。来自本地计算机的端口22连接被学院防火墙阻止。但是我可以访问一台机器(ssh隧道),通过它我可以登录到远程机器。现在有一种方法可以在远程主机上从本地机器运行ansible playbook。 在某种程度上,可以通过ssh隧道将Ansible/ssh连接到远程机器。但并不完全登录到ssh隧道。连接将通过隧道。 另一种方法是我可

  • 我想通过ssh隧道与具有localhost访问权限的用户连接到远程MySQL。 我用这个做隧道: 和这个连接到主机: 我得到的错误是: 问题是用户“user”@“remote-host”(或“user”@“%”)不存在,只有“user”@“localhost”存在。 有没有办法强迫远程主机在不进行服务器端修改的情况下认为我来自本地主机?这是我通过ssh隧道进行连接的唯一原因。 注: 如果要连接此命

  • 我希望使用jmx或JSTATD通过ssh隧道(到EC2机器)使用visualvm应用程序。我该怎么做?下面是已经尝试(和失败)的列表:(顺便说一句:如果visual vm不合适,如何在远程计算机上查找内存泄漏?) 我在EC2机器上设置了jstatd服务器(应用程序已经在上面运行),然后在VisualVM中设置了一个将本地端口3333映射到远程端口1099的隧道,我试图在端口3333上使用jstat

  • 问题内容: 我的目的是连接到位于防火墙后面的服务器(主机)。我可以通过连接到网络中的另一台服务器(隧道)然后通过SSH到该服务器来访问此服务器。但是,我无法通过JSch实现相同的方案。 我无法为此编写以下代码。如果我在这里做任何愚蠢的事情,请告诉我。 上面的代码在行中给出了以下异常。 问题答案: jsch上的代理设置允许您连接到远程端上 正在运行的 代理服务器。一个在远程端将 不 被视为一个代理。

  • 我想使用RazorSQL连接到我的数据库,该数据库正在远程服务器上运行。我使用以下命令在本地主机上创建SSH隧道: 我通过RazorSQL的GUI配置连接,将本地主机指定为主机,将1111指定为端口。当我单击“Connect”(连接)时,出现以下错误消息: 其中是远程服务器的IP地址。 此外,我不允许更改我的pg_hba的内容。conf文件。这就是目前的情况: 是否可以使用我当前的设置,在不修改服

  • 问题内容: 我已经在两个服务器 A 和 B 之间建立了SSH隧道。 B 有MySQL服务器,这可行: 虽然这不是: 尽管my.cnf具有以下几行: 现在关于隧道。它连接以下内容: 但是当(在 A上 ,端口转发)时,我会 我懂了 当我这样做 我懂了 可能是什么原因?我究竟做错了什么? 问题答案: 这里有三个问题。 1-暂时忘记SSH隧道 您不能将MySQL绑定到多个特定IP。第一个子句被第二个子句覆