ssh 터널 체인(이중 터널, 회사 네트워크의 서버)을 통해 Oracle Database 11g 서버에 연결하려면 어떻게 해야 합니까?
저는 회사 네트워크의 게이트웨이이기도 한 '퍼블릭' 서버에 SSH 액세스 권한을 가지고 있습니다.네트워크에 로컬 Oracle 데이터베이스 서버가 실행 중인 다른 서버가 있습니다(이 서버 외부에서는 액세스할 수 없으며 로컬 호스트 DB 연결만 허용됨).물론 이 서버에 대한 다른 SSH 액세스 권한도 있습니다.
네트워크 외부에서 이 Oracle Database 11g Server에 가입할 수 있는 방법이 있습니까? ssh 터널 체인과 같은 것이 있는지, 그리고 어떻게 구성하는지 묻고 있습니다.예를 들어 TOD for Oracle(ORACLE 클라이언트)의 경우 유용할 수 있습니다.
편집: 이미지입니다.
감사해요.
네, 가능합니다.예: 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
'programing' 카테고리의 다른 글
Linux에서 ASP.NET MVC 구축: 모범 사례, 툴 및 놀라움 (0) | 2023.07.04 |
---|---|
예외 java.lang을 가져오는 중입니다.ClassDefFoundError가 없습니다. com.google.화력 기지새 Firebase로 업데이트한 후의 Firebase 옵션 (0) | 2023.07.04 |
고유한 레코드 값 가져오기 (0) | 2023.07.04 |
스프링 보안이 설정된 스프링 부트: 'securityFilterChainRegistration' 이름의 빈을 생성하는 중 오류 발생 (0) | 2023.07.04 |
SQL Server에서 실제 일대일 관계를 만드는 방법 (0) | 2023.07.04 |