Pythonista3 for iphoneを使って簡単ssh port fowarding
用意するもの
- sshサーバー
- iphone
- Pythonista3(IOS)
鍵の準備
RSA暗号で秘密鍵と公開鍵を作成します。Ed25519は非対応なので必ずRSA暗号で鍵を作ってください!!PythonistaにStaShが入っていない場合はインストールして下さい。StaShで次のコマンドを実行します。
$ ssh-keygen -t rsa -b 4096
"~/.ssh/"にid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が生成されるはずです。作れたら公開鍵をsshサーバーに追加しておいて下さい。
sshtunnelのインストール
Pythonで作成されたsshtunnelというPort Fowardingが簡単にできるモジュールがあります。StaShで次のコマンドを実行してインストールします。
$ pip install sshtunnel
ここで、sshtunnelを少し修正します。sshtunnelはparamikoというモジュールに依存しているのですが、バージョンの食い違いでそのまま使うとエラーが出ます。PythonistaメニューのPython Modulesからsshtunnel.pyを探し出して次のように修正します。
1021> if host_pkey_directories is not None:
1022> paramiko_key_types = {'rsa': paramiko.RSAKey,
1023> 'dsa': paramiko.DSSKey,
1024>-'ecdsa': paramiko.ECDSAKey,
1025>-'ed25519': paramiko.Ed25519Key}
1024>+'ecdsa': paramiko.ECDSAKey}
...
1215> for pkey_class in (key_type,) if key_type else (
1216> paramiko.RSAKey,
1217> paramiko.DSSKey,
1218>- paramiko.ECDSAKey,
1219>- paramiko.Ed25519Key
1218>+ paramiko.ECDSAKey
1220> ):
-の行を消して+の行を追加して下さい。
プログラムの作成
sshtunnelを使ってポート転送するプログラムを書きます。
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
('sshサーバーアドレス', sshサーバーポート),
ssh_username='ユーザー名',
ssh_pkey='秘密鍵の場所',
remote_bind_address=('リモート側アドレス', リモート側ポート),
local_bind_address=('ローカル側アドレス', ローカル側ポート)
)
server.start()
input()
server.stop()
例えば次のように作成します。
from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
('server_ip', 22),
ssh_username='user',
ssh_pkey='~/.ssh/id_rsa',
remote_bind_address=('127.0.0.1', 8000),
local_bind_address=('127.0.0.1', 8000)
)
server.start()
input()
server.stop()
適当な場所にこのコードを作成して実行すればポート転送出来ます(iphoneの仕様上、バックグラウンドで動作するのは10分間だそうです)。Pythonistaは作成したプログラムのショートカットをホーム画面に追加する機能があります。作成しておけばワンクリックで実行できます。
Author And Source
この問題について(Pythonista3 for iphoneを使って簡単ssh port fowarding), 我々は、より多くの情報をここで見つけました https://qiita.com/calculator29/items/0dbae1b6afd1c74e213d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .