
기존 연결을 통해 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