イントラネット侵入を実現するためのSSHポート転送

イントラネット侵入を実現するためのSSHポート転送

LAN 内のマシンは外部ネットワークにアクセスできますが、外部ネットワークは内部ネットワークにアクセスできません。内部ネットワークがインターネットにアクセスすると外部ネットワークのアドレスを特定できるため、外部ネットワークはローカル エリア ネットワーク内の特定のアドレスを特定することはできません。 (IP アドレスは制限されています) 外部ネットワークにアクセスするときにこのリンクを開いたままにしておくと、このリンクは道路を構築するのと同じになり、内部ネットワークのデータが外に出て、外部ネットワークのデータが入ることができます。SSH もこの方式を使用します。

sshコマンドを使用してパブリックネットワークサーバーに接続する

1. まず、外部サーバーのsshd設定ファイルを編集します

vim /etc/ssh/sshd_config
#GatewayPortsスイッチをオンにします。GatewayPorts yes
変更を有効にするには、sshd サービスを再起動します (コマンドは Linux のバージョンによって異なる場合があります)
systemctl sshd を再起動します 

2. コマンド

ssh -NTf -R <ローカルホスト>:<ローカルポート>:<リモートホスト>:<リモートポート> user@host

local-host は省略できます。例: ssh -NTf -R 8888:127.0.0.1:8080 root@host

3. パラメータの説明

-C はデータの圧縮を有効にします
-f バックグラウンドで実行
-N はリモートホストに接続するだけで、リモートシェルを開かないことを意味します。
-R リモートサーバー、リバースプロキシへのポートのバインド
-L ポートをローカルクライアントにバインドし、プロキシを転送する
-T この接続にTTYを割り当てない
-NTは、このSSH接続がデータの転送にのみ使用され、リモート操作は実行されないことを意味します。

SSH接続を開いたままにする

通常、ssh を使用してサーバーに接続する場合、長時間操作が行われないと、接続は閉じられます。

方法1: クライアントを設定する

1) ユーザーレベルの設定

vim ~/.ssh/config (configがない場合は作成してください)

2) グローバル設定

ssh_config は、

いずれかを選択し、次のパラメータを追加します。

#60秒ごとに空のパケットをサーバーに送信します。 ServerAliveInterval 60
#2回以上失敗した場合は切断します ServerAliveCountMax 2
#転送が失敗した後に終了して接続の再確立を容易にする ExitOnForwardFailure yes

一時的な書き込み方法(推奨、他に影響を与えない)

ssh -o ServerAliveInterval=30 ルート@ホスト
ssh -NTf -R 8888:127.0.0.1:8080 root@host -o ServerAliveInterval=30 -o ServerAliveCountMax=2

方法2: サーバーの設定

vim /etc/ssh/sshd_config
#30秒ごとに、サーバーはクライアントにハートビートを送信します ClientAliveInterval 30
# 3 回のハートビートで応答がない場合、クライアントは切断されたとみなされます ClientAliveCountMax 3

方法3: シェルスクリプトを使用する

myAutoSSH.sh をタッチします
SSH接続をRSAパスワードフリー認証に設定しているため、ここでのロジックではパスワードは必要ありません。

SSHパスワード不要のログイン方法

ながら(1)
する
  ssh -NTR <ローカルホスト>:<ローカルポート>:<リモートホスト>:<リモートポート> user@host
終わり

切断後すぐに接続できるようにするには、-f パラメータを削除します。そうしないと、無限ループになります。

方法4: autosshを使用する

autosshソフトウェアをダウンロードする必要があり、操作はsshを直接使用するのとほぼ同じです。

-Mは監視ポートであり、コマンドへの応答があるかどうかを監視し、接続を維持するのに役立ちます。

autossh -M 5678 -NTR <ローカルホスト>:<ローカルポート>:<リモートホスト>:<リモートポート> user@host

ソフトウェアをダウンロードするのは好きではありません。インストールされるソフトウェアが乱雑なものが多く、構成を変更するのも好きではありません。変更すると他の人の使用に影響が出るのではないかと心配なので、クライアントの一時構成方法を使用するのが好きです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux SSHポートを転送する3つの方法
  • SSH ポート転送、ローカル ポート転送、リモート ポート転送、動的ポート転送の詳細
  • SSHリモートログインとポート転送の詳細な説明
  • SSH ポート転送とは何ですか?何の役に立つの?

<<:  Reactのdiffアルゴリズムの詳細な分析

>>:  MySQL/MariaDB ルートパスワードリセットチュートリアル

推薦する

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例最近のプロ...

Docker で複数の MySQL コンテナを作成して実行する方法の例

1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...

Vue実装のカウンターケース

この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...

データ構造 - ツリー (III): 多方向検索ツリー B ツリー、B+ ツリー

多方向探索ツリー完全二分木の高さ: O(log2N)、ここで2は対数完全なM方向探索木の高さ: O(...

メンテナンスしやすい CSS コードを書くための 5 つのガイドライン

1. スタイルシートの先頭にコメント ブロックを追加して、スタイルシートの作成日、作成者、タグ、その...

MySQL では SQL ステートメントはどのように実行されますか?

目次1. MySQLアーキテクチャの分析1.1 コネクタ1.2 クエリキャッシュ1.3 アナライザー...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...

セマンティック HTML 構造の利点は何ですか?

1つ: 1.セマンティック タグは単なる HTML であり、CSS にはセマンティクスはありません...

史上最もシンプルな MySQL データのバックアップと復元のチュートリアル (パート 1) (パート 35)

データのバックアップと復元に関する最初の記事を皆さんに共有します。具体的な内容は次のとおりです。基本...

JConsoler を使って Tomcat の JVM メモリを監視する方法を説明します

目次1. Tomcatを監視する方法2. Java独自の監視コマンド3. Tomcatのトラブルシュ...

JavaScriptを使って動的にテーブルを生成するケースの詳しい説明

目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...

JavaScript デザインパターン コマンドパターン

コマンド パターンは、JavaScript デザイン パターンにおける動作デザイン パターンです。定...

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

Linux システムコマンドのメモ

この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...

React.cloneElement の使い方の詳しい説明

目次cloneElementの役割使用シナリオ新しい小道具を追加するプロップを変更するイベントカスタ...