로컬 컴퓨터에서 개인 네트워크의 DB에 어떻게 연결합니까?

로컬 컴퓨터에서 개인 네트워크의 DB에 어떻게 연결합니까?

현재 개인 네트워크 내에서 Alpine Linux를 실행하는 도커 이미지가 있습니다. 해당 도커 이미지에 대한 루트 액세스 권한이 있습니다.

동일한 프라이빗 네트워크에 데이터베이스 인스턴스가 있습니다. 동일한 네트워크에 있는 시스템만 데이터베이스에 접근할 수 있습니다. (예: 앞서 언급한 도커 이미지)

지금은 DB 내부의 내용을 디버깅하기 위해 SSH를 통해 Docker 이미지에 연결한 다음 해당 Docker 이미지 내부에서 명령줄 도구를 실행해야 했습니다. 그거 꽤 복잡해요

대신 로컬 PC 내부의 개발 도구를 사용하여 해당 데이터베이스에 연결할 수 있는 방법이 있습니까? 이 용어가 포트 포워딩인지 프록싱인지 잘 모르겠습니다.

답변1

나는 당신이 다음과 같이 연결한다고 가정합니다 :

ssh user@docker

당신은 필요합니다 -L:

ssh -L port1:server:port2 user@docker

server:port2도커 컨테이너에서 본 데이터베이스의 주소와 포트는 어디에 있습니까(이 주소는 확인됩니다)거기).

로컬은 sshTCP 포트에서 로컬로 수신 대기합니다 port1. 포트를 선택합니다.

이제 로컬 컴퓨터에서 localhost:port1(또는 )에 연결하면 에서 127.0.0.1:port1연결됩니다 . 기계 는 그것이 에서 오는 것을 볼 것입니다 . 이를 "로컬 포트 ​​포워딩"이라고 합니다.server:port2dockerserverdocker

이런 방식으로 로컬 도구가 원격 데이터베이스에 접근할 수 있습니다. 도구를 에 연결해야 합니다 localhost:port1.

노트:

  • 이는 TCP에서만 작동합니다.UDP가 아님.
  • 로컬 네트워크의 다른 컴퓨터는 로컬 컴퓨터를 데이터베이스에 연결하기 위한 릴레이로 사용할 수 없습니다. 아마도 이것이 당신이 원하는 방식일 것입니다. 그렇지 않다면 다음 질문을 확인하십시오.SSH를 사용하여 로컬 네트워크에서 터널링된 리소스를 제공할 수 있나요?
  • ssh -N …터널을 구축하는 데 사용원격 명령을 실행하지 않고.
  • autossh이를 자동화하는 데 사용합니다 .
  • 1024 미만의 번호를 가진 포트는 권한이 있습니다. 일반 사용자는 해당 포트에 바인딩할 수 없습니다. 그에 따라 선택하십시오 port1.
  • SSH 서버의 설정( AllowTcpForwarding귀하 의 경우)을 사용하여 포트 전달을 허용하지 않을 수 있습니다. 기본값은 허용이므로 아마도 즉시 작동할 것입니다.sshd_configdocker

관련 정보