스크립트를 통해 기존 연결에 SSH 터널 설정

스크립트를 통해 기존 연결에 SSH 터널 설정

기존 연결을 통해 SSH 터널을 설정하고 싶습니다. 까다로운 부분은 스크립트를 통해 이 작업을 수행하는 것입니다(사용자가 이 터널 설정과 같은 특정 작업만 수행하도록 허용하는 사용자 정의 셸이 필요합니다).

일반적으로 다음과 같이 할 수 있습니다.

<enter>
~C
ssh> -L 8080:localhost:80

하지만 실행 중인 Python 스크립트를 통해 이 작업을 수행할 수 있어야 합니다. 나는 시도했다:

print("\n~C -L 8080:localhost:80")

그러나 불행하게도 이 아이디어는 너무 단순하다.

그렇다면 실행 중인 Python 스크립트에서 터널을 어떻게 설정합니까?

ssh -N -L x:host:y host.example.com(부가적인 질문으로, 차단하기 위해 포트 전달을 설정 해야 했지만 여전히 내 사용자 정의 셸은 허용했습니다.)

답변1

사용해 보세요sshtunnel도서관.

예:

from sshtunnel import SSHTunnelForwarder
from time import sleep

with SSHTunnelForwarder(
    ('localhost', 2222),
    ssh_username="vagrant",
    ssh_password="vagrant",
    remote_bind_address=('127.0.0.1', 3306)) as server:

    print(server.local_bind_port)
    while True:
        # press Ctrl-C for stopping
        sleep(1)

print('FINISH!')

또는 CLI:

python -m sshtunnel -U vagrant -P vagrant -L :3306 -R 127.0.0.1:3306 -p 2222 localhost

관련 정보