DNSを使用してSSHポート転送を自動化する

DNSを使用してSSHポート転送を自動化する

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 はそれらのポートをローカル マシンに転送します。そのため、何も記憶する必要はありません。ポートは現在作業しているホストからのみ転送され、ポートの数は任意で、使用されているポートのみ転送されます。とても便利です。

関連情報