당신은 전통적으로 reserved for ssh
입니다 포트 (22)에 연결된다. 나는 JDBC 연결을 통해 해당 포트에 연결하면 나는 당신이 your previous question에서 보여 같은 오류 스택을 얻을 :
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 25978
at java.lang.String.checkBounds(String.java:401)
at java.lang.String.<init>(String.java:338)
at oracle.net.ns.Packet.extractData(Packet.java:429)
at oracle.net.ns.RefusePacket.<init>(RefusePacket.java:72)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:356)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157)
음, 약간의 차이 때문에 내가 연결 해요 방법의 스택과 내가 사용 버전하지만, 문자열 색인은 동일합니다. ssh
이 JDBC 드라이버가 리스너로부터 다시 볼 것으로 예상하는 추가 데이터로 연결에 응답하는 것 같습니다. 유효한 SQL 단지 포트 번호를 변경
는
* 순 리스너 포트는이 오류를 제거하고 연결이 성공합니다.
그래서 리스너의 실제 포트 번호를 사용하도록 변경하십시오. 기본적으로 1521이지만 사용자 정의가있을 수 있습니다. lsnrctl status
이 무엇인지 알려줍니다. 권한이 부여 된 범위에 있으므로 사용자 정의 된 경우에도 22가 될 가능성은 낮으며 청취자는 바인딩하기 위해 root
으로 실행해야합니다. 당신이 * 원격 서버에 ssh
을 통해 인터넷 연결을 당신의 SQL을 터널링하고 있기 때문에 나는 당신이 시도했을 수도 생각할 수
유일한 이유입니다. 이 경우 원격 서버의 실제 리스너 포트에 매핑되는 로컬 포트 (-L
플래그에서)를 사용해야합니다. 예를 들어, ssh -L 1234:127.0.0.1:1521 -l user 172.30.32.222
이라면 dbconnection
은 localhost
이고 포트는 1234
입니다. 나는 당신이 분명히 22를 사용했을 것이라고 추측하고있다.