ssh多段接続による自宅のLANで※※する。

投稿者: | 2021年8月29日

 家には仕事のLAN(LAN1)と遊びのLAN(LAN2)がある。インターネットにつながっているのは遊びLAN(LAN2)なので、リモートから接続できるのはLAN2の方だ。ルーターにsshでログインし、さらに仕事LANにsshログインすれば、コマンド打ちの仕事はできていた。

 仕事LAN上にmysqlを置いたので、リモートからポートフォワードで接続したい。実際Qiitaの記事でできたけど、ちょっと理解を深めておきたい。

次に踏み台Bへの接続設定です。同時に踏み台AからB経由でのWindowsマシンへのポート転送をしています。ssh -L <踏み台Aのポート番号(任意)>::<リモートデスクトップのポート番号> -g <踏み台Bへのssh接続ユーザ>@<踏み台BのIP>です。

とある。ProxyCommand で ssh ~うんちゃらって指定すれば多段ポート転送ができるらしい。

sshのコマンドオプションを解説したサイト(https://nxmnpg.lemoda.net/ja/1/ssh)をみると、

-g
     リモートホストが転送されたローカルなポートに接続することを許可します。
-L
     port : host : hostport与えられたローカル (クライアント) ホスト上のポートが、 与えられたリモートホスト上のポートに転送されるようにします (ローカル→リモートのポート転送)。 これはローカル側で port に listen (接続受け付け) 用の ソケットを割り当てることによりおこなわれます。 このポートに向けておこなわれた接続はつねに 安全な通信路を経由してリモートマシン上に到達し、 そこから host のポート hostport に接続されるようになります。 ポート転送は設定ファイルによっても指定できます。 特権ポートを転送できるのは root だけです。 IPv6 アドレスの場合は、指定する形式が異なります: port/ host /hostport

-R
     port : host : hostport与えられたリモート (サーバ) ホスト上のポートが、 与えられたローカルホスト上のポートに転送されるようにします (リモート→ローカルのポート転送)。 これはリモート側で port に listen (接続受け付け) 用の ソケットを割り当てることによりおこなわれます。 このポートに向けておこなわれた接続はつねに 安全な通信路を経由してローカルマシン上に到達し、ここから host のポート hostport に接続されるようになります。 ポート転送は設定ファイルによっても指定できます。 特権ポートを転送できるのは、リモートマシン上に root としてログインしているときだけです。 IPv6 アドレスの場合は、指定する形式が異なります: port/ host/hostport

となっている。localhostのポート接続を奥(接続先)へ、奥へとつないでいくときは -L を使うようだし、奥のクライアントが自分のポートに接続したいときは -R を使うと理解した。

-L:   HostA → HastB → HostC  へと繋いでくれる。(ポートアクセスを(L)ocalがする→Remoteからトンネルする場面用)

-R:  HostA ← HostB ← HostC  へと繋いでくれる。(ポートアクセスを(R)emoteがする→Localへトンネルする場面用)

-Wオプションって何?

-w クライアント側のトンネルデバイス,[:ホストのトンネルデバイス]
    トンネリングするクライアントのデバイスとホストのデバイスを設定します。

という記述を見つけた。デバイスを設定すると書いてある。

ProxyCommand ssh -W %h:%p hostA

これは全て(Whole)のポートをhostAに転送することを意味しているようだ。なので指定したポート番号は同じままトンネルされてくることになるらしい。

・・・らしい、ばかりで、ごめんなさい( 一一)

カテゴリー: NET

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です