파이썬으로 ssh 터널 만들기

3977 단어 SSHPython3SSHTunnel

소개



개발은 이상한 곳에서 액세스하고 싶지 않기 위해 DB에 액세스 할 수있는 서버를 제한합니다.
액세스할 수 있는 서버를 발판이라고 합니다만, 기본적으로는 중계 지점이 될 뿐이므로 개발에 편리한 소프트웨어가 거의 들어가 있지 않습니다.
그래서 터널처럼 로컬 PC와 목적 DB까지의 통신을 발판은 통과시키는 것만으로 실제 처리는 로컬 PC에서 실시하는 ssh 터널이라는 것이 자주 사용됩니다.
ssh 클라이언트로 유명한 teraterm도 가능하지만, 업무 자동화의 일환으로 사용한 python에서의 ssh 터널의 방법을 정리합니다.

환경


  • python3:3.6.5
  • sshtunnel:0.4.0

  • sshtunnel 설치



    ssh 터널을 만들려면 sshtunnel을 사용합니다.
    sshtunnel의 설치는 보통 pip로 설치하면 됩니다.
    pip install sshtunnel
    

    sshtunnel 사용법



    sshtunnel은 다음 절차에 사용됩니다.
  • ssh 설정
  • ssh 터널 시작
  • DB 등의 바인드 대상에 대한 처리
  • ssh 터널 닫기

  • sshtunnel 설정



    설정 내용



    ssh 터널은 그림과 같이 발판 서버를 통해 DB에 연결하기 때문에 필요한 설정은 7개 있습니다.


  • 발판에 로그인하기 위한 정보
  • 발판의 IP 주소 (위 그림 예 : 192.168.1.0)
  • 발판에 로그인하기위한 사용자 ID
  • 발판에 로그인하기위한 암호 또는 키 파일 경로

  • 로컬 PC와 발판 사이의 설정
  • 로컬 PC의 IP 주소 (위 그림 예 : 0.0.0.0)
  • 로컬 PC에 바인드 하는 포트 번호 (위 그림의 예:400)

  • 발판과 DB 간 설정
  • DB의 IP 주소 (위 그림 예 : 192.168.2.0)
  • 발판에 바인딩 할 포트 번호 (위 그림 예 : 5432)


  • 설정 방법



    설정 방법은 간단합니다. sshtunnel을 import하고 SSHTunnelForwarder에게 주면됩니다.
    local_bind_address에서 포트를 지정하지 않으면 자동으로 비어 있는 포트가 사용됩니다. 사용된 포트를 알기 위해서는 server.local_bind_port에서 알 수 있습니다.
    from sshtunnel import SSHTunnelForwarder
    server = SSHTunnelForwarder((
            192.168.1.0,
            22
        ),
        ssh_username='login_user,
        ssh_pkey='C:\\key.pem,
        remote_bind_address=(
            '192.168.2.0',
            5432
        ),
        local_bind_address=(
            '0.0.0.0',
            400
    ))
    

    ssh 터널 시작



    설정 후 ssh 터널을 활성화합니다. 활성화 후 설정에서 제공한 로컬 포트에 액세스하면 발판에 바인딩한 DB에 액세스할 수 있습니다.
    예를 들어 로컬 5432 포트에 대해 SQL을 실행하면 192.168.2.0의 DB에 대해 SQL이 실행됩니다.
    server.start()
    

    ssh 터널 종료



    모든 처리가 끝나면 ssh 터널을 닫아 줄 필요가 있습니다.
    server.stop()
    

    결론



    파이썬에서 ssh 터널을 조작하는 방법을 요약했습니다.
    위를 활용하여 발판 앞의 DB로부터 정보를 취득하여 엑셀에 기재하는 프로그램을 만들었습니다.
    이와 같이 마지막 엑셀 조작 과 한층 더 이전 DB 작업 를 사용하면 할 수 있는 것이 퍼집니다. .
    발판에 로그인해 여러가지로 하는 것이 아니라, 자신이 쾌적하게 되도록 작성한 로컬의 환경을 최대한 이용해 테스트나 프로덕션 환경등의 작업을 최고 효율로 작업해 최대한 즐깁시다.

    좋은 웹페이지 즐겨찾기