既存の接続を介して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