
host1
簡単にするために、、host2
など、多数の ssh ホスト (12 個) があります。
頻繁にポート転送が必要になります。
ssh -L 8888:localhost:8888 host1
ssh -L 8889:localhost:8888 host2
ssh -L 8890:localhost:80 host2
これは面倒です。1) ローカルポートからホストへのマッピングを覚えておく必要があり、2) 手動で行う必要があるからです。
host1.8888.ssh.local
たとえば、特定のホスト(ローカル、自分のマシン上)をリッスンし、このアドレスへのトンネルを自動的に開くようなシステムを実装したいと思います。
答え1
これらすべての設定は、通常次の場所にある ssh 設定ファイル内で行うことができます。$HOME/.ssh/config
例えば:
Host abc
Hostname 1.2.3.4
Port 345
IdentityFile /path/to/id_rsa
LocalForward 8888 localhost:8888
User root
Host def
Hostname 2.3.4.5
User root
LocalForward 8889 localhost:8889
この方法では、入力するだけssh abc
で、そこに指定したすべての設定が適用されます。利用可能なオプションは、マニュアルページ。
答え2
私は開発しましたsshトンネルこれはトンネルを確立し、それを稼働させ続けるサービスです。
server "srv_us"
HostName="srv.us"
User="root"
IdentityFile="/root/.ssh/id_ed25519"
tunnelR "srv_us_http"
servername="srv_us"
remoteaddress="1"
remoteport=80
localaddress="127.0.0.1"
localport=8080
OpenWrtルーターをお持ちの場合は、同様のものを使用できますsshトンネルサービス。最近、これを設定するための GUI luci-app-sshtunnel が追加されました。
答え3
未来からのメモ。質問とは何の関係もありませんが、根本的な問題は解決しました。
サーバー上の vs code で作業する場合、プロセス (jupyter、tensorboard、ダッシュボード、Web サーバーなど) を開始した後、vs code はそれらのポートをローカル マシンに転送します。そのため、何も記憶する必要はありません。ポートは現在作業しているホストからのみ転送され、ポートの数は任意で、使用されているポートのみ転送されます。とても便利です。