programing

ssh 터널 체인(이중 터널, 회사 네트워크의 서버)을 통해 Oracle Database 11g 서버에 연결하려면 어떻게 해야 합니까?

javamemo 2023. 7. 4. 21:38
반응형

ssh 터널 체인(이중 터널, 회사 네트워크의 서버)을 통해 Oracle Database 11g 서버에 연결하려면 어떻게 해야 합니까?

저는 회사 네트워크의 게이트웨이이기도 한 '퍼블릭' 서버에 SSH 액세스 권한을 가지고 있습니다.네트워크에 로컬 Oracle 데이터베이스 서버가 실행 중인 다른 서버가 있습니다(이 서버 외부에서는 액세스할 수 없으며 로컬 호스트 DB 연결만 허용됨).물론 이 서버에 대한 다른 SSH 액세스 권한도 있습니다.

네트워크 외부에서 이 Oracle Database 11g Server에 가입할 수 있는 방법이 있습니까? ssh 터널 체인과 같은 것이 있는지, 그리고 어떻게 구성하는지 묻고 있습니다.예를 들어 TOD for Oracle(ORACLE 클라이언트)의 경우 유용할 수 있습니다.

편집: 이미지입니다.

alt text감사해요.

네, 가능합니다.예: Linux에서 실행

ssh -N -Llocalport:dbserver:dbport yourname@connectionserver

어디에

  • localport는 전달될 컴퓨터의 포트입니다(실행 중인 오라클의 로컬 인스턴스가 없는 경우 1521일 수 있음).
  • dbserver는 데이터베이스 서버의 이름 또는 IP입니다.
  • dbport는 데이터베이스의 포트(일반적으로 1521)입니다.
  • 사용자 이름은 연결 서버의 로그인입니다.
  • 연결 서버는 SSH 액세스 권한이 있는 시스템입니다.

Putty와 함께 제공되는 Plink를 사용하여 Windows에서도 동일한 작업을 수행할 수 있습니다.

plink -N -L localport:dbserver:dbport yourname@connectionserver

두 시스템(로컬 시스템과 액세스 권한이 있는 서버) 모두에서 이 작업을 수행하여 ssh 터널을 연결합니다.예:

연결 서버(Linux로 가정):

ssh -N -L1521:dbserver:1521 dblogin@dbserver

PC:

plink -N -L 1521:connectionserver:1521 connlogin@connectionserver

tnsnames.ora 항목은 로컬 데이터베이스를 실행 중인 것처럼 보여야 합니다.

prodoverssh =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = prod)
    )
  )

감사합니다!

전화해봤어요.ssh -N -LXXXX:server:YYYY login@server두번이라.

먼저 전화를 했습니다.

ssh -L 9998:127.0.0.1:9997 login@gate.company.cz

내 PC에서.

그리고 나서, 이 서버에서 (SSH 세션 중에) 전화했습니다.

ssh -L 9997:localhost:1521 root@192.168.105.111

여기서 192.168.105.111은 Oracle이 실행 중인 서버입니다.

그래서 제가 한 일은 방향을 바꾼 것입니다.

1521 (COMPANY ORACLE SERVER) 
  -> 9997 (COMPANY GATEWAY SERVER)
     -> 9998 (LOCAL PC)

그래서 저는 포트 9998의 로컬 PC에서 Oracle 액세스 권한을 얻었습니다.

여기 댓글에서 @j_maly와 동일한 문제가 있었습니다. "MY REMOTE PC"(linux)에서 이렇게 하면 "GATEWAY"에 터널 하나만 사용하여 연결할 수 있습니다.

ssh -L 1521:DATABASE_URL_OR_IP:1521 USER@GATEWAY

하지만 받은 후에ORA-12170: TNS:Connect timeout occurred반복해서.내가 한 일:

  • GATEWAY에서 작동하는 오라클을 기반으로 연결합니다. 이 경우 sqlplus도 작동해야 합니다.sqdeveloper의 오라클 작업 URL이database.company.ex

  • 게이트웨이에서 실행netstat -putan | grep 1521그리고 여기 문제가 있습니다.
    것과 것이 다른 있다는 것을 했습니다("connection").database.company.ex).

  • 그래서 당신은 결과에 표시된 ip 또는 url을 넣어야 합니다.netstat -putan | grep 1521"게이트웨이"에서

    ssh - L 1521:DATABASE_URL_OR_IP_SHOWED_IN_NETSTAT:1521 USER@GATEWAY

정확히 왜 이런 일이 일어나는지는 모르겠지만, 동일한 데이터베이스에 연결하기 위해 여러 개의 IP를 찾았는데, 그 중 일부에서 연결할 수 없습니다. 문제를 해결하려면 올바른 IP를 찾아야 합니다.

로컬 포트(이 경우 11000)를 변경하고 출력(-fN) 없이 이 명령을 실행할 수도 있습니다.

ssh -fN -L 11000:DATABASE:1521 USER@GATEWAY

당신은 또한 추가할 수 있습니다.-f백그라운드에서 ssh 명령을 실행하는 옵션입니다.

언급URL : https://stackoverflow.com/questions/3653788/how-can-i-connect-to-oracle-database-11g-server-through-ssh-tunnel-chain-double

반응형